home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / man / cat.1 / gcc.1 < prev    next >
Text File  |  1995-07-25  |  194KB  |  3,499 lines

  1.  
  2.  
  3.  
  4.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  5.  
  6.  
  7.  
  8.      NNNNAAAAMMMMEEEE
  9.           gcc, g++ - GNU project C and C++ Compiler (v2.4)
  10.  
  11.      SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.           ggggcccccccc [ _o_p_t_i_o_n | _f_i_l_e_n_a_m_e ]...
  13.           gggg++++++++ [ _o_p_t_i_o_n | _f_i_l_e_n_a_m_e ]...
  14.  
  15.      WWWWAAAARRRRNNNNIIIINNNNGGGG
  16.           The information in this man page is an extract from the full
  17.           documentation of the GNU C compiler, and is limited to the
  18.           meaning of the options.
  19.  
  20.           This man page is not kept up to date except when volunteers
  21.           want to maintain it.  If you find a discrepancy between the
  22.           man page and the software, please check the Info file, which
  23.           is the authoritative documentation.
  24.  
  25.           If we find that the things in this man page that are out of
  26.           date cause significant confusion or complaints, we will stop
  27.           distributing the man page.  The alternative, updating the
  28.           man page when we update the Info file, is impossible because
  29.           the rest of the work of maintaining GNU CC leaves us no time
  30.           for that.  The GNU project regards man pages as obsolete and
  31.           should not let them take time away from other things.
  32.  
  33.           For complete and current documentation, refer to the Info
  34.           file `ggggcccccccc' or the manual _U_s_i_n_g _a_n_d _P_o_r_t_i_n_g _G_N_U _C_C (_f_o_r
  35.           _v_e_r_s_i_o_n _2._0).  Both are made from the Texinfo source file
  36.           ggggcccccccc....tttteeeexxxxiiiinnnnffffoooo.
  37.  
  38.      DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  39.           The C and C++ compilers are integrated.  Both process input
  40.           files through one or more of four stages: preprocessing,
  41.           compilation, assembly, and linking.  Source filename
  42.           suffixes identify the source language, but which name you
  43.           use for the compiler governs default assumptions:
  44.  
  45.           ggggcccccccc  assumes preprocessed (....iiii) files are C and assumes C
  46.                style linking.
  47.  
  48.           gggg++++++++  assumes preprocessed (....iiii) files are C++ and assumes C++
  49.                style linking.
  50.  
  51.           Suffixes of source file names indicate the language and kind
  52.           of processing to be done:
  53.  
  54.           ....cccc    C source; preprocess, compile, assemble
  55.           ....CCCC    C++ source; preprocess, compile, assemble
  56.           ....cccccccc   C++ source; preprocess, compile, assemble
  57.           ....ccccxxxxxxxx  C++ source; preprocess, compile, assemble
  58.           ....mmmm    Objective-C source; preprocess, compile, assemble
  59.           ....iiii    preprocessed C; compile, assemble
  60.  
  61.  
  62.  
  63.      Page 1                                          (printed 3/28/94)
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  71.  
  72.  
  73.  
  74.           ....iiiiiiii   preprocessed C++; compile, assemble
  75.           ....ssss    Assembler source; assemble
  76.           ....SSSS    Assembler source; preprocess, assemble
  77.           ....hhhh    Preprocessor file; not usually named on command line
  78.  
  79.           Files with other suffixes are passed to the linker.  Common
  80.           cases include:
  81.  
  82.           ....oooo    Object file
  83.           ....aaaa    Archive file
  84.  
  85.           Linking is always the last stage unless you use one of the
  86.           ----cccc, ----SSSS, or ----EEEE options to avoid it (or unless compilation
  87.           errors stop the whole process).  For the link stage, all ....oooo
  88.           files corresponding to source files, ----llll libraries,
  89.           unrecognized filenames (including named ....oooo object files and
  90.           ....aaaa archives) are passed to the linker in command-line order.
  91.  
  92.      OOOOPPPPTTTTIIIIOOOONNNNSSSS
  93.           Options must be separate: `----ddddrrrr' is quite different from `----dddd
  94.           ----rrrr '.
  95.  
  96.           Most `----ffff' and `----WWWW' options have two contrary forms: ----ffff_n_a_m_e
  97.           and ----ffffnnnnoooo----_n_a_m_e (or ----WWWW_n_a_m_e and ----WWWWnnnnoooo----_n_a_m_e).  Only the non-
  98.           default forms are shown here.
  99.  
  100.           Here is a summary of all the options, grouped by type.
  101.           Explanations are in the following sections.
  102.  
  103.           OOOOvvvveeeerrrraaaallllllll OOOOppppttttiiiioooonnnnssss
  104.                -c -S -E -o _f_i_l_e -pipe -v -x _l_a_n_g_u_a_g_e
  105.  
  106.           LLLLaaaannnngggguuuuaaaaggggeeee OOOOppppttttiiiioooonnnnssss
  107.                -ansi -fall-virtual -fcond-mismatch
  108.                -fdollars-in-identifiers -fenum-int-equiv
  109.                -fexternal-templates -fno-asm -fno-builtin
  110.                -fno-strict-prototype -fsigned-bitfields -fsigned-char
  111.                -fthis-is-variable -funsigned-bitfields -funsigned-char
  112.                -fwritable-strings -traditional -traditional-cpp
  113.                -trigraphs
  114.  
  115.           WWWWaaaarrrrnnnniiiinnnngggg OOOOppppttttiiiioooonnnnssss
  116.                -fsyntax-only -pedantic -pedantic-errors -w -W -Wall
  117.                -Waggregate-return -Wcast-align -Wcast-qual
  118.                -Wchar-subscript -Wcomment -Wconversion -Wenum-clash
  119.                -Werror -Wformat -Wid-clash-_l_e_n -Wimplicit -Winline
  120.                -Wmissing-prototypes -Wnested-externs -Wno-import
  121.                -Wparentheses -Wpointer-arith -Wredundant-decls
  122.                -Wreturn-type -Wshadow -Wstrict-prototypes -Wswitch
  123.                -Wtemplate-debugging -Wtraditional -Wtrigraphs
  124.                -Wuninitialized -Wunused -Wwrite-strings
  125.  
  126.  
  127.  
  128.  
  129.      Page 2                                          (printed 3/28/94)
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  137.  
  138.  
  139.  
  140.           DDDDeeeebbbbuuuuggggggggiiiinnnngggg OOOOppppttttiiiioooonnnnssss
  141.                -a -d_l_e_t_t_e_r_s -fpretend-float -g -g_l_e_v_e_l -gcoff -gxcoff
  142.                -gxcoff+ -gdwarf -gdwarf+ -gstabs -gstabs+ -ggdb -p -pg
  143.                -save-temps -print-libgcc-file-name
  144.  
  145.           OOOOppppttttiiiimmmmiiiizzzzaaaattttiiiioooonnnn OOOOppppttttiiiioooonnnnssss
  146.                -fcaller-saves -fcse-follow-jumps -fcse-skip-blocks
  147.                -fdelayed-branch -felide-constructors
  148.                -fexpensive-optimizations -ffast-math -ffloat-store
  149.                -fforce-addr -fforce-mem -finline-functions
  150.                -fkeep-inline-functions -fmemoize-lookups
  151.                -fno-default-inline -fno-defer-pop -fno-function-cse
  152.                -fno-inline -fno-peephole -fomit-frame-pointer
  153.                -frerun-cse-after-loop -fschedule-insns
  154.                -fschedule-insns2 -fstrength-reduce -fthread-jumps
  155.                -funroll-all-loops -funroll-loops -O -O2
  156.  
  157.           PPPPrrrreeeepppprrrroooocccceeeessssssssoooorrrr OOOOppppttttiiiioooonnnnssss
  158.                -A_a_s_s_e_r_t_i_o_n -C -dD -dM -dN -D_m_a_c_r_o[=_d_e_f_n] -E -H
  159.                -idirafter _d_i_r -include _f_i_l_e -imacros _f_i_l_e -iprefix
  160.                _f_i_l_e -iwithprefix _d_i_r -M -MD -MM -MMD -nostdinc -P
  161.                -U_m_a_c_r_o -undef
  162.  
  163.           AAAAsssssssseeeemmmmbbbblllleeeerrrr OOOOppppttttiiiioooonnnn
  164.                -Wa,_o_p_t_i_o_n
  165.  
  166.           LLLLiiiinnnnkkkkeeeerrrr OOOOppppttttiiiioooonnnnssss
  167.                -l_l_i_b_r_a_r_y -nostartfiles -nostdlib -static -shared
  168.                -symbolic -Xlinker _o_p_t_i_o_n -Wl,_o_p_t_i_o_n -u _s_y_m_b_o_l
  169.  
  170.           DDDDiiiirrrreeeeccccttttoooorrrryyyy OOOOppppttttiiiioooonnnnssss
  171.                -B_p_r_e_f_i_x -I_d_i_r -I- -L_d_i_r
  172.  
  173.           TTTTaaaarrrrggggeeeetttt OOOOppppttttiiiioooonnnnssss
  174.                -b  _m_a_c_h_i_n_e -V _v_e_r_s_i_o_n
  175.  
  176.           CCCCoooonnnnffffiiiigggguuuurrrraaaattttiiiioooonnnn DDDDeeeeppppeeeennnnddddeeeennnntttt OOOOppppttttiiiioooonnnnssss
  177.                _M_6_8_0_x_0 _O_p_t_i_o_n_s
  178.                -m68000 -m68020 -m68020-40 -m68030 -m68040 -m68881
  179.                -mbitfield -mc68000 -mc68020 -mfpa -mnobitfield -mrtd
  180.                -mshort -msoft-float
  181.  
  182.                _V_A_X _O_p_t_i_o_n_s
  183.                -mg -mgnu -munix
  184.  
  185.                _S_P_A_R_C _O_p_t_i_o_n_s
  186.                -mepilogue -mfpu -mhard-float -mno-fpu -mno-epilogue
  187.                -msoft-float -msparclite -mv8
  188.  
  189.                _C_o_n_v_e_x _O_p_t_i_o_n_s
  190.                -margcount -mc1 -mc2 -mnoargcount
  191.  
  192.  
  193.  
  194.  
  195.      Page 3                                          (printed 3/28/94)
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  203.  
  204.  
  205.  
  206.                _A_M_D_2_9_K _O_p_t_i_o_n_s
  207.                -m29000 -m29050 -mbw -mdw -mkernel-registers -mlarge
  208.                -mnbw -mnodw -msmall -mstack-check -muser-registers
  209.  
  210.                _M_8_8_K _O_p_t_i_o_n_s
  211.                -m88000 -m88100 -m88110 -mbig-pic -mcheck-zero-division
  212.                -mhandle-large-shift -midentify-revision
  213.                -mno-check-zero-division -mno-ocs-debug-info
  214.                -mno-ocs-frame-position -mno-optimize-arg-area
  215.                -mno-seriazlize-volatile -mno-underscores
  216.                -mocs-debug-info -mocs-frame-position
  217.                -moptimize-arg-area -mserialize-volatile
  218.                -mshort-data-_n_u_m -msvr3 -msvr4 -mtrap-large-shift
  219.                -muse-div-instruction -mversion-03.00
  220.                -mwarn-passed-structs
  221.  
  222.                _R_S_6_0_0_0 _O_p_t_i_o_n_s
  223.                -mfp-in-toc -mno-fop-in-toc
  224.  
  225.                _R_T _O_p_t_i_o_n_s
  226.                -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs
  227.                -mfull-fp-blocks -mhc-struct-return -min-line-mul
  228.                -mminimum-fp-blocks -mnohc-struct-return
  229.  
  230.                _M_I_P_S _O_p_t_i_o_n_s
  231.                -mcpu=_c_p_u _t_y_p_e -mips2 -mips3 -mint64 -mlong64
  232.                -mlonglong128 -mmips-as -mgas -mrnames -mno-rnames
  233.                -mgpopt -mno-gpopt -mstats -mno-stats -mmemcpy
  234.                -mno-memcpy -mno-mips-tfile -mmips-tfile -msoft-float
  235.                -mhard-float -mabicalls -mno-abicalls -mhalf-pic
  236.                -mno-half-pic -G _n_u_m -nocpp
  237.  
  238.                _i_3_8_6 _O_p_t_i_o_n_s
  239.                -m486 -mno-486 -msoft-float -mno-fp-ret-in-387
  240.  
  241.                _H_P_P_A _O_p_t_i_o_n_s
  242.                -mpa-risc-1-0 -mpa-risc-1-1 -mkernel -mshared-libs
  243.                -mno-shared-libs -mlong-calls -mdisable-fpregs
  244.                -mdisable-indexing -mtrailing-colon
  245.  
  246.                _i_9_6_0 _O_p_t_i_o_n_s
  247.                -m_c_p_u-_t_y_p_e -mnumerics -msoft-float -mleaf-procedures
  248.                -mno-leaf-procedures -mtail-call -mno-tail-call
  249.                -mcomplex-addr -mno-complex-addr -mcode-align
  250.                -mno-code-align -mic-compat -mic2.0-compat
  251.                -mic3.0-compat -masm-compat -mintel-asm -mstrict-align
  252.                -mno-strict-align -mold-align -mno-old-align
  253.  
  254.                _D_E_C _A_l_p_h_a _O_p_t_i_o_n_s
  255.                -mfp-regs -mno-fp-regs -mno-soft-float -msoft-float
  256.  
  257.                _S_y_s_t_e_m _V _O_p_t_i_o_n_s
  258.  
  259.  
  260.  
  261.      Page 4                                          (printed 3/28/94)
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  269.  
  270.  
  271.  
  272.                -G -Qy -Qn -YP,_p_a_t_h_s -Ym,_d_i_r
  273.  
  274.           CCCCooooddddeeee GGGGeeeennnneeeerrrraaaattttiiiioooonnnn OOOOppppttttiiiioooonnnnssss
  275.                -fcall-saved-_r_e_g -fcall-used-_r_e_g -ffixed-_r_e_g
  276.                -finhibit-size-directive -fnonnull-objects -fno-common
  277.                -fno-ident -fno-gnu-linker -fpcc-struct-return -fpic
  278.                -fPIC -freg-struct-returno -fshared-data -fshort-enums
  279.                -fshort-double -fvolatile -fvolatile-global
  280.                -fverbose-asm
  281.  
  282.      OOOOVVVVEEEERRRRAAAALLLLLLLL OOOOPPPPTTTTIIIIOOOONNNNSSSS
  283.           ----xxxx _l_a_n_g_u_a_g_e
  284.                Specify explicitly the _l_a_n_g_u_a_g_e for the following input
  285.                files (rather than choosing a default based on the file
  286.                name suffix) .  This option applies  to  all  following
  287.                input  files  until  the  next  `----xxxx'  option.  Possible
  288.                values of _l_a_n_g_u_a_g_e are `cccc', `oooobbbbjjjjeeeeccccttttiiiivvvveeee----cccc',  `cccc----hhhheeeeaaaaddddeeeerrrr',
  289.                `cccc++++++++',       `ccccpppppppp----oooouuuuttttppppuuuutttt',       `aaaasssssssseeeemmmmbbbblllleeeerrrr',       and
  290.                `aaaasssssssseeeemmmmbbbblllleeeerrrr----wwwwiiiitttthhhh----ccccpppppppp'.
  291.  
  292.           ----xxxx nnnnoooonnnneeee
  293.                Turn off any specification of a language, so that  sub-
  294.                sequent  files are handled according to their file name
  295.                suffixes (as they are if `----xxxx'  has  not  been  used  at
  296.                all).
  297.  
  298.           If you want only some of the four stages  (preprocess,  com-
  299.           pile,  assemble,  link),  you can use `----xxxx' (or filename suf-
  300.           fixes) to tell ggggcccccccc where to start, and one  of  the  options
  301.           `----cccc',  `----SSSS', or `----EEEE' to say where ggggcccccccc is to stop.  Note that
  302.           some combinations (for example, `----xxxx ccccpppppppp----oooouuuuttttppppuuuutttt ----EEEE') instruct
  303.           ggggcccccccc to do nothing at all.
  304.  
  305.           ----cccc   Compile or assemble the source files, but do not  link.
  306.                The  compiler output is an object file corresponding to
  307.                each source file.
  308.  
  309.                By default, GCC makes the object file name for a source
  310.                file  by  replacing  the suffix `....cccc', `....iiii', `....ssss', etc.,
  311.                with `....oooo'.  Use ----oooo to select another name.
  312.  
  313.                GCC ignores any unrecognized input files (those that do
  314.                not  require  compilation  or assembly) with the ----cccc op-
  315.                tion.
  316.  
  317.           ----SSSS   Stop after the stage of compilation proper; do not  as-
  318.                semble.   The output is an assembler code file for each
  319.                non-assembler input file specified.
  320.  
  321.                By default, GCC makes the assembler  file  name  for  a
  322.                source  file  by replacing the suffix `....cccc', `....iiii', etc.,
  323.                with `....ssss'.  Use ----oooo to select another name.
  324.  
  325.  
  326.  
  327.      Page 5                                          (printed 3/28/94)
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  335.  
  336.  
  337.  
  338.                GCC ignores any input files that don't require compila-
  339.                tion.
  340.  
  341.           ----EEEE   Stop after the preprocessing stage; do not run the com-
  342.                piler  proper.  The output is preprocessed source code,
  343.                which is sent to the standard output.
  344.  
  345.                GCC ignores input files which don't require preprocess-
  346.                ing.
  347.  
  348.           ----oooo _f_i_l_e
  349.                Place output in file _f_i_l_e.  This applies regardless  to
  350.                whatever sort of output GCC is producing, whether it be
  351.                an executable file, an object file, an  assembler  file
  352.                or preprocessed C code.
  353.  
  354.                Since only one output file can be  specified,  it  does
  355.                not make sense to use `----oooo' when compiling more than one
  356.                input file, unless you are producing an executable file
  357.                as output.
  358.  
  359.                If you do not specify `----oooo', the default is  to  put  an
  360.                executable   file  in  `aaaa....oooouuuutttt',  the  object  file  for
  361.                `_s_o_u_r_c_e...._s_u_f_f_i_x' in `_s_o_u_r_c_e....oooo', its  assembler  file  in
  362.                `_s_o_u_r_c_e....ssss',  and  all preprocessed C source on standard
  363.                output.
  364.  
  365.           ----vvvv   Print (on standard error output) the commands  executed
  366.                to  run the stages of compilation.  Also print the ver-
  367.                sion number of the compiler driver program and  of  the
  368.                preprocessor and the compiler proper.
  369.  
  370.           ----ppppiiiippppeeee
  371.                Use pipes rather than temporary files for communication
  372.                between  the various stages of compilation.  This fails
  373.                to work on some systems where the assembler cannot read
  374.                from a pipe; but the GNU assembler has no trouble.
  375.  
  376.      LLLLAAAANNNNGGGGUUUUAAAAGGGGEEEE OOOOPPPPTTTTIIIIOOOONNNNSSSS
  377.           The following options control the dialect of C that the com-
  378.           piler accepts:
  379.  
  380.           ----aaaannnnssssiiii
  381.                Support all ANSI standard C programs.
  382.  
  383.                This turns off certain features of GNU C that  are  in-
  384.                compatible  with  ANSI  C,  such as the aaaassssmmmm, iiiinnnnlllliiiinnnneeee and
  385.                ttttyyyyppppeeeeooooffff keywords, and predefined macros such as uuuunnnniiiixxxx and
  386.                vvvvaaaaxxxx that identify the type of system you are using.  It
  387.                also enables the undesirable and rarely used ANSI  tri-
  388.                graph  feature,  and  disallows `$$$$' as part of identif-
  389.                iers.
  390.  
  391.  
  392.  
  393.      Page 6                                          (printed 3/28/94)
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  401.  
  402.  
  403.  
  404.                The alternate keywords  ________aaaassssmmmm________,  ________eeeexxxxtttteeeennnnssssiiiioooonnnn________,  ________iiiinnnn----
  405.                lllliiiinnnneeee________ and ________ttttyyyyppppeeeeooooffff________ continue to work despite `----aaaannnnssssiiii'.
  406.                You would not want to use them in an ANSI C program, of
  407.                course,  but  it  is useful to put them in header files
  408.                that  might  be  included  in  compilations  done  with
  409.                `----aaaannnnssssiiii'.   Alternate predefined macros such as ________uuuunnnniiiixxxx________
  410.                and  ________vvvvaaaaxxxx________  are  also  available,  with  or   without
  411.                `----aaaannnnssssiiii'.
  412.  
  413.                The `----aaaannnnssssiiii' option does not cause non-ANSI programs  to
  414.                be rejected gratuitously.  For that, `----ppppeeeeddddaaaannnnttttiiiicccc' is re-
  415.                quired in addition to `----aaaannnnssssiiii'.
  416.  
  417.                The preprocessor  predefines  a  macro  ________SSSSTTTTRRRRIIIICCCCTTTT____AAAANNNNSSSSIIII________
  418.                when you use the `----aaaannnnssssiiii' option.  Some header files may
  419.                notice this macro and refrain  from  declaring  certain
  420.                functions  or  defining  certain  macros  that the ANSI
  421.                standard doesn't call for; this is to avoid interfering
  422.                with  any programs that might use these names for other
  423.                things.
  424.  
  425.           ----ffffnnnnoooo----aaaassssmmmm
  426.                Do not recognize aaaassssmmmm, iiiinnnnlllliiiinnnneeee or ttttyyyyppppeeeeooooffff  as  a  keyword.
  427.                These  words  may then be used as identifiers.  You can
  428.                use  ________aaaassssmmmm________,  ________iiiinnnnlllliiiinnnneeee________   and   ________ttttyyyyppppeeeeooooffff________   instead.
  429.                `----aaaannnnssssiiii' implies `----ffffnnnnoooo----aaaassssmmmm'.
  430.  
  431.           ----ffffnnnnoooo----bbbbuuuuiiiillllttttiiiinnnn
  432.                Don't recognize built-in functions that  do  not  begin
  433.                with two leading underscores.  Currently, the functions
  434.                affected include ____eeeexxxxiiiitttt, aaaabbbboooorrrrtttt, aaaabbbbssss, aaaallllllllooooccccaaaa, ccccoooossss,  eeeexxxxiiiitttt,
  435.                ffffaaaabbbbssss,  llllaaaabbbbssss, mmmmeeeemmmmccccmmmmpppp, mmmmeeeemmmmccccppppyyyy, ssssiiiinnnn, ssssqqqqrrrrtttt, ssssttttrrrrccccmmmmpppp, ssssttttrrrrccccppppyyyy,
  436.                and ssssttttrrrrlllleeeennnn.
  437.  
  438.                The `----aaaannnnssssiiii' option prevents aaaallllllllooooccccaaaa and ____eeeexxxxiiiitttt from being
  439.                builtin functions.
  440.  
  441.           ----ffffnnnnoooo----ssssttttrrrriiiicccctttt----pppprrrroooottttoooottttyyyyppppeeee
  442.                Treat a function declaration with no arguments, such as
  443.                `iiiinnnntttt  ffffoooooooo  ();',  as C would treat it-as saying nothing
  444.                about the number  of  arguments  or  their  types  (C++
  445.                only).   Normally, such a declaration in C++ means that
  446.                the function ffffoooooooo takes no arguments.
  447.  
  448.           ----ttttrrrriiiiggggrrrraaaapppphhhhssss
  449.                Support ANSI C trigraphs.  The `----aaaannnnssssiiii'  option  implies
  450.                `----ttttrrrriiiiggggrrrraaaapppphhhhssss'.
  451.  
  452.           ----ttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll
  453.                Attempt to support some aspects of traditional  C  com-
  454.                pilers.   For details, see the GNU C Manual; the dupli-
  455.                cate list here has been deleted so that  we  won't  get
  456.  
  457.  
  458.  
  459.      Page 7                                          (printed 3/28/94)
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  467.  
  468.  
  469.  
  470.                complaints when it is out of date.
  471.  
  472.                But one note about C++ programs only (not C).  `----ttttrrrraaaaddddiiii----
  473.                ttttiiiioooonnnnaaaallll'  has  one additional effect for C++: assignment
  474.                to tttthhhhiiiissss is permitted.  This is the same as  the  effect
  475.                of `----fffftttthhhhiiiissss----iiiissss----vvvvaaaarrrriiiiaaaabbbblllleeee'.
  476.  
  477.           ----ttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll----ccccpppppppp
  478.                Attempt  to  support  some  aspects  of  traditional  C
  479.                preprocessors.   This  includes the items that specifi-
  480.                cally mention the preprocessor above, but none  of  the
  481.                other effects of `----ttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll'.
  482.  
  483.           ----ffffddddoooollllllllaaaarrrrssss----iiiinnnn----iiiiddddeeeennnnttttiiiiffffiiiieeeerrrrssss
  484.                Permit the use of `$$$$' in identifiers (C++  only).   You
  485.                can also use `----ffffnnnnoooo----ddddoooollllllllaaaarrrrssss----iiiinnnn----iiiiddddeeeennnnttttiiiiffffiiiieeeerrrrssss' to explicit-
  486.                ly prohibit use of `$$$$'.  (GNU C++ allows `$$$$' by default
  487.                on some target systems but not others.)
  488.  
  489.           ----ffffeeeennnnuuuummmm----iiiinnnntttt----eeeeqqqquuuuiiiivvvv
  490.                Permit implicit conversion of iiiinnnntttt to enumeration  types
  491.                (C++ only).  Normally GNU C++ allows conversion of eeeennnnuuuummmm
  492.                to iiiinnnntttt, but not the other way around.
  493.  
  494.           ----ffffeeeexxxxtttteeeerrrrnnnnaaaallll----tttteeeemmmmppppllllaaaatttteeeessss
  495.                Produce smaller code for template declarations, by gen-
  496.                erating  only  a  single copy of each template function
  497.                where it is defined (C++ only).   To  use  this  option
  498.                successfully,  you  must  also  mark all files that use
  499.                templates with either `####pppprrrraaaaggggmmmmaaaa iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn' (the de-
  500.                finition) or `####pppprrrraaaaggggmmmmaaaa iiiinnnntttteeeerrrrffffaaaacccceeee' (declarations).
  501.  
  502.                When your code is compiled with `----ffffeeeexxxxtttteeeerrrrnnnnaaaallll----tttteeeemmmmppppllllaaaatttteeeessss',
  503.                all template instantiations are external.  You must ar-
  504.                range for all necessary instantiations to appear in the
  505.                implementation  file;  you  can  do this with a ttttyyyyppppeeeeddddeeeeffff
  506.                that references each instantiation needed.  Conversely,
  507.                when    you    compile   using   the   default   option
  508.                `----ffffnnnnoooo----eeeexxxxtttteeeerrrrnnnnaaaallll----tttteeeemmmmppppllllaaaatttteeeessss', all template  instantiations
  509.                are explicitly internal.
  510.  
  511.           ----ffffaaaallllllll----vvvviiiirrrrttttuuuuaaaallll
  512.                Treat all possible member functions as virtual,  impli-
  513.                citly.   All  member  functions (except for constructor
  514.                functions and  nnnneeeewwww  or  ddddeeeelllleeeetttteeee  member  operators)  are
  515.                treated  as  virtual  functions of the class where they
  516.                appear.
  517.  
  518.                This does not mean that all calls to these member func-
  519.                tions will be made through the internal table of virtu-
  520.                al functions.  Under some circumstances,  the  compiler
  521.                can  determine  that a call to a given virtual function
  522.  
  523.  
  524.  
  525.      Page 8                                          (printed 3/28/94)
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  533.  
  534.  
  535.  
  536.                can be made directly; in  these  cases  the  calls  are
  537.                direct in any case.
  538.  
  539.           ----ffffccccoooonnnndddd----mmmmiiiissssmmmmaaaattttcccchhhh
  540.                Allow conditional expressions with mismatched types  in
  541.                the  second  and third arguments.  The value of such an
  542.                expression is void.
  543.  
  544.           ----fffftttthhhhiiiissss----iiiissss----vvvvaaaarrrriiiiaaaabbbblllleeee
  545.                Permit assignment to tttthhhhiiiissss (C++ only).   The  incorpora-
  546.                tion of user-defined free store management into C++ has
  547.                made assignment to `tttthhhhiiiissss' an  anachronism.   Therefore,
  548.                by  default  it  is  invalid to assign to tttthhhhiiiissss within a
  549.                class member function.  However, for backwards compati-
  550.                bility,   you   can  make  it  valid  with  `----fffftttthhhhiiiissss----iiiissss----
  551.                vvvvaaaarrrriiiiaaaabbbblllleeee'.
  552.  
  553.           ----ffffuuuunnnnssssiiiiggggnnnneeeedddd----cccchhhhaaaarrrr
  554.                Let the type cccchhhhaaaarrrr be unsigned, like uuuunnnnssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr.
  555.  
  556.                Each kind of machine has a default for what cccchhhhaaaarrrr should
  557.                be.  It is either like uuuunnnnssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr by default or like
  558.                ssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr by default.
  559.  
  560.                Ideally, a portable program should  always  use  ssssiiiiggggnnnneeeedddd
  561.                cccchhhhaaaarrrr or uuuunnnnssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr when it depends on the signedness
  562.                of an object.  But many programs have been  written  to
  563.                use plain cccchhhhaaaarrrr and expect it to be signed, or expect it
  564.                to be unsigned, depending on  the  machines  they  were
  565.                written  for.   This  option,  and its inverse, let you
  566.                make such a program work with the opposite default.
  567.  
  568.                The type cccchhhhaaaarrrr is always a distinct type  from  each  of
  569.                ssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr and uuuunnnnssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr, even though its behavior
  570.                is always just like one of those two.
  571.  
  572.           ----ffffssssiiiiggggnnnneeeedddd----cccchhhhaaaarrrr
  573.                Let the type cccchhhhaaaarrrr be signed, like ssssiiiiggggnnnneeeedddd cccchhhhaaaarrrr.
  574.  
  575.                Note that this is equivalent  to  `----ffffnnnnoooo----uuuunnnnssssiiiiggggnnnneeeedddd----cccchhhhaaaarrrr',
  576.                which is the negative form of `----ffffuuuunnnnssssiiiiggggnnnneeeedddd----cccchhhhaaaarrrr'.  Like-
  577.                wise,    `----ffffnnnnoooo----ssssiiiiggggnnnneeeedddd----cccchhhhaaaarrrr'    is     equivalent     to
  578.                `----ffffuuuunnnnssssiiiiggggnnnneeeedddd----cccchhhhaaaarrrr'.
  579.  
  580.           ----ffffssssiiiiggggnnnneeeedddd----bbbbiiiittttffffiiiieeeellllddddssss
  581.  
  582.           ----ffffuuuunnnnssssiiiiggggnnnneeeedddd----bbbbiiiittttffffiiiieeeellllddddssss
  583.  
  584.           ----ffffnnnnoooo----ssssiiiiggggnnnneeeedddd----bbbbiiiittttffffiiiieeeellllddddssss
  585.  
  586.           ----ffffnnnnoooo----uuuunnnnssssiiiiggggnnnneeeedddd----bbbbiiiittttffffiiiieeeellllddddssss
  587.                These options control whether a bitfield is  signed  or
  588.  
  589.  
  590.  
  591.      Page 9                                          (printed 3/28/94)
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  599.  
  600.  
  601.  
  602.                unsigned,  when  declared  with no explicit `ssssiiiiggggnnnneeeedddd' or
  603.                `uuuunnnnssssiiiiggggnnnneeeedddd' qualifier.  By default, such a  bitfield  is
  604.                signed,  because  this is consistent: the basic integer
  605.                types such as iiiinnnntttt are signed types.
  606.  
  607.                However, when you specify `----ttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll', bitfields are
  608.                all unsigned no matter what.
  609.  
  610.           ----ffffwwwwrrrriiiittttaaaabbbblllleeee----ssssttttrrrriiiinnnnggggssss
  611.                Store string constants in the writable data segment and
  612.                don't  uniquize  them.   This is for compatibility with
  613.                old programs which assume they can  write  into  string
  614.                constants.  `----ttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll' also has this effect.
  615.  
  616.                Writing into string constants is a very bad idea;  con-
  617.                stants should be constant.
  618.  
  619.      PPPPRRRREEEEPPPPRRRROOOOCCCCEEEESSSSSSSSOOOORRRR OOOOPPPPTTTTIIIIOOOONNNNSSSS
  620.           These options control the C preprocessor, which  is  run  on
  621.           each C source file before actual compilation.
  622.  
  623.           If you use the `----EEEE' option, GCC does nothing except  prepro-
  624.           cessing.   Some  of  these  options make sense only together
  625.           with `----EEEE' because they cause the preprocessor output  to  be
  626.           unsuitable for actual compilation.
  627.  
  628.           ----iiiinnnncccclllluuuuddddeeee _f_i_l_e
  629.                Process _f_i_l_e as input before processing the regular in-
  630.                put file.  In effect, the contents of _f_i_l_e are compiled
  631.                first.  Any `----DDDD' and `----UUUU' options on the  command  line
  632.                are always processed before `----iiiinnnncccclllluuuuddddeeee _f_i_l_e', regardless
  633.                of the order in which they are written.  All the  `----iiiinnnn----
  634.                cccclllluuuuddddeeee' and `----iiiimmmmaaaaccccrrrroooossss' options are processed in the ord-
  635.                er in which they are written.
  636.  
  637.           ----iiiimmmmaaaaccccrrrroooossss _f_i_l_e
  638.                Process _f_i_l_e as input, discarding the resulting output,
  639.                before  processing the regular input file.  Because the
  640.                output generated from _f_i_l_e is discarded, the  only  ef-
  641.                fect  of  `----iiiimmmmaaaaccccrrrroooossss _f_i_l_e' is to make the macros defined
  642.                in _f_i_l_e available for  use  in  the  main  input.   The
  643.                preprocessor evaluates any `----DDDD' and `----UUUU' options on the
  644.                command line before processing `----iiiimmmmaaaaccccrrrroooossss_f_i_l_e',  regard-
  645.                less  of  the order in which they are written.  All the
  646.                `----iiiinnnncccclllluuuuddddeeee' and `----iiiimmmmaaaaccccrrrroooossss' options are processed in  the
  647.                order in which they are written.
  648.  
  649.           ----iiiiddddiiiirrrraaaafffftttteeeerrrr _d_i_r
  650.                Add the directory _d_i_r to the second include path.   The
  651.                directories  on  the  second  include path are searched
  652.                when a header file is not found in any  of  the  direc-
  653.                tories in the main include path (the one that `----IIII' adds
  654.  
  655.  
  656.  
  657.      Page 10                                         (printed 3/28/94)
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  665.  
  666.  
  667.  
  668.                to).
  669.  
  670.           ----iiiipppprrrreeeeffffiiiixxxx _p_r_e_f_i_x
  671.                Specify _p_r_e_f_i_x as the prefix for subsequent `----iiiiwwwwiiiitttthhhhpppprrrreeee----
  672.                ffffiiiixxxx' options.
  673.  
  674.           ----iiiiwwwwiiiitttthhhhpppprrrreeeeffffiiiixxxx _d_i_r
  675.                Add a  directory  to  the  second  include  path.   The
  676.                directory's  name  is  made by concatenating _p_r_e_f_i_x and
  677.                _d_i_r, where _p_r_e_f_i_x was specified previously with `----iiiipppprrrreeee----
  678.                ffffiiiixxxx'.
  679.  
  680.           ----nnnnoooossssttttddddiiiinnnncccc
  681.                Do not  search  the  standard  system  directories  for
  682.                header  files.  Only the directories you have specified
  683.                with `----IIII' options (and the current  directory,  if  ap-
  684.                propriate) are searched.
  685.  
  686.                By using both `----nnnnoooossssttttddddiiiinnnncccc' and `----IIII----', you can limit  the
  687.                include-file  search file to only those directories you
  688.                specify explicitly.
  689.  
  690.           ----nnnnoooossssttttddddiiiinnnncccc++++++++
  691.                Do not search for  header  files  in  the  C++-specific
  692.                standard  directories,  but  do  still search the other
  693.                standard directories.  (This option is used when build-
  694.                ing `lllliiiibbbbgggg++++++++'.)
  695.  
  696.           ----uuuunnnnddddeeeeffff
  697.                Do not predefine any  nonstandard  macros.   (Including
  698.                architecture flags).
  699.  
  700.           ----EEEE   Run only the C  preprocessor.   Preprocess  all  the  C
  701.                source  files specified and output the results to stan-
  702.                dard output or to the specified output file.
  703.  
  704.           ----CCCC   Tell the preprocessor not to  discard  comments.   Used
  705.                with the `----EEEE' option.
  706.  
  707.           ----PPPP   Tell the preprocessor not to generate `####lllliiiinnnneeee' commands.
  708.                Used with the `----EEEE' option.
  709.  
  710.           ----MMMM   Tell the preprocessor to output  a  rule  suitable  for
  711.                mmmmaaaakkkkeeee  describing  the dependencies of each object file.
  712.                For each source  file,  the  preprocessor  outputs  one
  713.                mmmmaaaakkkkeeee-rule whose target is the object file name for that
  714.                source file and whose dependencies are  all  the  files
  715.                `####iiiinnnncccclllluuuuddddeeee'd  in  it.  This rule may be a single line or
  716.                may be continued with `\\\\'-newline if it is  long.   The
  717.                list  of rules is printed on standard output instead of
  718.                the preprocessed C program.
  719.  
  720.  
  721.  
  722.  
  723.      Page 11                                         (printed 3/28/94)
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  731.  
  732.  
  733.  
  734.                `----MMMM' implies `----EEEE'.
  735.  
  736.           ----MMMMMMMM  Like `----MMMM' but the output mentions only the user  header
  737.                files  included  with  `####iiiinnnncccclllluuuuddddeeee _f_i_l_e"'.  System header
  738.                files included with `####iiiinnnncccclllluuuuddddeeee <<<<_f_i_l_e>' are omitted.
  739.  
  740.           ----MMMMDDDD  Like `----MMMM' but the dependency information is written  to
  741.                files  with  names  made by replacing `....oooo' with `....dddd' at
  742.                the end of the output file names.  This is in  addition
  743.                to compiling the file as specified-`----MMMMDDDD' does not inhi-
  744.                bit ordinary compilation the way `----MMMM' does.
  745.  
  746.                The Mach utility `mmmmdddd' can be used  to  merge  the  `....dddd'
  747.                files  into a single dependency file suitable for using
  748.                with the `mmmmaaaakkkkeeee' command.
  749.  
  750.           ----MMMMMMMMDDDD Like `----MMMMDDDD' except mention only user header  files,  not
  751.                system header files.
  752.  
  753.           ----HHHH   Print the name of each header file used, in addition to
  754.                other normal activities.
  755.  
  756.           ----AAAA_q_u_e_s_t_i_o_n((((_a_n_s_w_e_r))))
  757.                Assert the answer _a_n_s_w_e_r for _q_u_e_s_t_i_o_n, in  case  it  is
  758.                tested  with  a  preprocessor  conditional such as `####iiiiffff
  759.                ####_q_u_e_s_t_i_o_n((((_a_n_s_w_e_r))))'.  `----AAAA----' disables the standard asser-
  760.                tions that normally describe the target machine.
  761.  
  762.           ----AAAA_q_u_e_s_t_i_o_n
  763.                (_a_n_s_w_e_r) Assert the answer _a_n_s_w_e_r for _q_u_e_s_t_i_o_n, in case
  764.                it  is  tested  with a preprocessor conditional such as
  765.                `####iiiiffff #_q_u_e_s_t_i_o_n(_a_n_s_w_e_r)'.  `----AAAA----' disables  the  standard
  766.                assertions that normally describe the target machine.
  767.  
  768.           ----DDDD_m_a_c_r_o
  769.                Define macro _m_a_c_r_o with the string `1111' as  its  defini-
  770.                tion.
  771.  
  772.           ----DDDD_m_a_c_r_o====_d_e_f_n
  773.                Define macro _m_a_c_r_o as _d_e_f_n.    All instances of `----DDDD' on
  774.                the command line are processed before any `----UUUU' options.
  775.  
  776.           ----UUUU_m_a_c_r_o
  777.                Undefine macro _m_a_c_r_o.  `----UUUU' options are evaluated after
  778.                all `----DDDD' options, but before any `----iiiinnnncccclllluuuuddddeeee' and `----iiiimmmmaaaacccc----
  779.                rrrroooossss' options.
  780.  
  781.           ----ddddMMMM  Tell the preprocessor to output only a list of the mac-
  782.                ro definitions that are in effect at the end of prepro-
  783.                cessing.  Used with the `----EEEE' option.
  784.  
  785.           ----ddddDDDD  Tell the preprocessor to  pass  all  macro  definitions
  786.  
  787.  
  788.  
  789.      Page 12                                         (printed 3/28/94)
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  797.  
  798.  
  799.  
  800.                into  the  output, in their proper sequence in the rest
  801.                of the output.
  802.  
  803.           ----ddddNNNN  Like `----ddddDDDD' except that the macro arguments and contents
  804.                are  omitted.   Only  `####ddddeeeeffffiiiinnnneeee _n_a_m_e' is included in the
  805.                output.
  806.  
  807.      AAAASSSSSSSSEEEEMMMMBBBBLLLLEEEERRRR OOOOPPPPTTTTIIIIOOOONNNN
  808.           ----WWWWaaaa,,,,_o_p_t_i_o_n
  809.                Pass _o_p_t_i_o_n as an option to the assembler.   If  _o_p_t_i_o_n
  810.                contains  commas,  it is split into multiple options at
  811.                the commas.
  812.  
  813.      LLLLIIIINNNNKKKKEEEERRRR OOOOPPPPTTTTIIIIOOOONNNNSSSS
  814.           These options come into play when the compiler links  object
  815.           files  into an executable output file.  They are meaningless
  816.           if the compiler is not doing a link step.
  817.  
  818.           _o_b_j_e_c_t-_f_i_l_e-_n_a_m_e
  819.                A file name that does not end in a  special  recognized
  820.                suffix is considered to name an object file or library.
  821.                (Object files are distinguished from libraries  by  the
  822.                linker  according to the file contents.)  If GCC does a
  823.                link step, these object files are used as input to  the
  824.                linker.
  825.  
  826.           ----llll_l_i_b_r_a_r_y
  827.                Use the library named _l_i_b_r_a_r_y when linking.
  828.  
  829.                The linker searches a standard list of directories  for
  830.                the   library,   which   is   actually   a  file  named
  831.                `lllliiiibbbb_l_i_b_r_a_r_y.a'.  The linker then uses this file  as  if
  832.                it had been specified precisely by name.
  833.  
  834.                The directories searched include several standard  sys-
  835.                tem directories plus any that you specify with `----LLLL'.
  836.  
  837.                Normally the files found this way  are  library  files-
  838.                archive  files  whose  members  are  object files.  The
  839.                linker handles an archive file by scanning  through  it
  840.                for  members which define symbols that have so far been
  841.                referenced but not defined.   However,  if  the  linker
  842.                finds  an  ordinary  object file rather than a library,
  843.                the object file is linked in the  usual  fashion.   The
  844.                only difference between using an `----llll' option and speci-
  845.                fying a file name is that `----llll' surrounds  _l_i_b_r_a_r_y  with
  846.                `lllliiiibbbb' and `....aaaa' and searches several directories.
  847.  
  848.           ----lllloooobbbbjjjjcccc
  849.                You need this special case of the ----llll option in order to
  850.                link an Objective C program.
  851.  
  852.  
  853.  
  854.  
  855.      Page 13                                         (printed 3/28/94)
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  863.  
  864.  
  865.  
  866.           ----nnnnoooossssttttaaaarrrrttttffffiiiilllleeeessss
  867.                Do not use the standard system startup files when link-
  868.                ing.  The standard libraries are used normally.
  869.  
  870.           ----nnnnoooossssttttddddlllliiiibbbb
  871.                Don't use the standard  system  libraries  and  startup
  872.                files when linking.  Only the files you specify will be
  873.                passed to the linker.
  874.  
  875.           ----ssssttttaaaattttiiiicccc
  876.                On systems that support dynamic linking, this  prevents
  877.                linking  with  the shared libraries.  On other systems,
  878.                this option has no effect.
  879.  
  880.           ----sssshhhhaaaarrrreeeedddd
  881.                Produce a shared object which can then be  linked  with
  882.                other  objects  to form an executable.  Only a few sys-
  883.                tems support this option.
  884.  
  885.           ----ssssyyyymmmmbbbboooolllliiiicccc
  886.                Bind references  to  global  symbols  when  building  a
  887.                shared  object.   Warn  about any unresolved references
  888.                (unless overridden by the link editor option  `----XXXXlllliiiinnnnkkkkeeeerrrr
  889.                ----zzzz  ----XXXXlllliiiinnnnkkkkeeeerrrr  ddddeeeeffffssss').   Only a few systems support this
  890.                option.
  891.  
  892.           ----XXXXlllliiiinnnnkkkkeeeerrrr _o_p_t_i_o_n
  893.                Pass _o_p_t_i_o_n as an option to the linker.   You  can  use
  894.                this to supply system-specific linker options which GNU
  895.                CC does not know how to recognize.
  896.  
  897.                If you want to pass an option that takes  an  argument,
  898.                you  must use `----XXXXlllliiiinnnnkkkkeeeerrrr' twice, once for the option and
  899.                once for the argument.  For example, to  pass  `----aaaasssssssseeeerrrrtttt
  900.                ddddeeeeffffiiiinnnniiiittttiiiioooonnnnssss', you must write `----XXXXlllliiiinnnnkkkkeeeerrrr ----aaaasssssssseeeerrrrtttt ----XXXXlllliiiinnnnkkkkeeeerrrr
  901.                ddddeeeeffffiiiinnnniiiittttiiiioooonnnnssss'.  It does  not  work  to  write  `----XXXXlllliiiinnnnkkkkeeeerrrr
  902.                """"----aaaasssssssseeeerrrrtttt  ddddeeeeffffiiiinnnniiiittttiiiioooonnnnssss""""', because this passes the entire
  903.                string as a single argument,  which  is  not  what  the
  904.                linker expects.
  905.  
  906.           ----WWWWllll,,,,_o_p_t_i_o_n
  907.                Pass _o_p_t_i_o_n as an option to the linker.  If _o_p_t_i_o_n con-
  908.                tains  commas, it is split into multiple options at the
  909.                commas.
  910.  
  911.           ----uuuu _s_y_m_b_o_l
  912.                Pretend the symbol _s_y_m_b_o_l is undefined, to force  link-
  913.                ing  of library modules to define it.  You can use `----uuuu'
  914.                multiple times with different symbols to force  loading
  915.                of additional library modules.
  916.  
  917.      DDDDIIIIRRRREEEECCCCTTTTOOOORRRRYYYY OOOOPPPPTTTTIIIIOOOONNNNSSSS
  918.  
  919.  
  920.  
  921.      PPPPaaaaggggeeee 11114444                                         ((((pppprrrriiiinnnntttteeeedddd 3333////22228888////99994444))))
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  929.  
  930.  
  931.  
  932.           These options  specify  directories  to  search  for  header
  933.           files, for libraries and for parts of the compiler:
  934.  
  935.           ----IIII_d_i_r
  936.                Append  directory  _d_i_r  to  the  list  of   directories
  937.                searched for include files.
  938.  
  939.           ----IIII----  Any directories you specify with  `----IIII'  options  before
  940.                the  `----IIII----'  option  are  searched  only for the case of
  941.                `####iiiinnnncccclllluuuuddddeeee """"_f_i_l_e""""'; they are not searched for  `####iiiinnnncccclllluuuuddddeeee
  942.                <<<<_f_i_l_e>'.
  943.  
  944.                If additional directories are specified with  `----IIII'  op-
  945.                tions  after  the `----IIII----', these directories are searched
  946.                for all `####iiiinnnncccclllluuuuddddeeee' directives.   (Ordinarily  _a_l_l  `----IIII'
  947.                directories are used this way.)
  948.  
  949.                In addition, the `----IIII----' option inhibits the use  of  the
  950.                current  directory  (where  the current input file came
  951.                from) as  the  first  search  directory  for  `####iiiinnnncccclllluuuuddddeeee
  952.                """"_f_i_l_e""""'.   There  is  no way to override this effect of
  953.                `----IIII----'.  With `----IIII....' you can specify searching the direc-
  954.                tory  which  was current when the compiler was invoked.
  955.                That is not exactly the same as what  the  preprocessor
  956.                does by default, but it is often satisfactory.
  957.  
  958.                `----IIII----' does not inhibit the use of the  standard  system
  959.                directories  for header files.  Thus, `----IIII----' and `----nnnnoooosssstttt----
  960.                ddddiiiinnnncccc' are independent.
  961.  
  962.           ----LLLL_d_i_r
  963.                Add directory _d_i_r to the  list  of  directories  to  be
  964.                searched for `----llll'.
  965.  
  966.           ----BBBB_p_r_e_f_i_x
  967.                This option specifies where to  find  the  executables,
  968.                libraries and data files of the compiler itself.
  969.  
  970.                The compiler driver program runs one  or  more  of  the
  971.                subprograms `ccccpppppppp', `cccccccc1111' (or, for C++, `cccccccc1111pppplllluuuussss'), `aaaassss'
  972.                and `lllldddd'.  It tries _p_r_e_f_i_x as a prefix for each program
  973.                it    tries    to    run,   both   with   and   without
  974.                `_m_a_c_h_i_n_e////_v_e_r_s_i_o_n////'.
  975.  
  976.                For each subprogram to  be  run,  the  compiler  driver
  977.                first  tries  the `----BBBB' prefix, if any.  If that name is
  978.                not found, or if `----BBBB' was  not  specified,  the  driver
  979.                tries  two standard prefixes, which are `////uuuussssrrrr////lllliiiibbbb////ggggcccccccc////'
  980.                and `////uuuussssrrrr////llllooooccccaaaallll////lllliiiibbbb////ggggcccccccc----lllliiiibbbb////'.   If  neither  of  those
  981.                results  in  a  file  name  that is found, the compiler
  982.                driver searches for the unmodified program name,  using
  983.                the  directories  specified  in your `PPPPAAAATTTTHHHH' environment
  984.  
  985.  
  986.  
  987.      Page 15                                         (printed 3/28/94)
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  995.  
  996.  
  997.  
  998.                variable.
  999.  
  1000.                The run-time support file `lllliiiibbbbggggcccccccc....aaaa' is  also  searched
  1001.                for  using  the  `----BBBB'  prefix, if needed.  If it is not
  1002.                found there, the two standard prefixes above are tried,
  1003.                and  that  is all.  The file is left out of the link if
  1004.                it is not found by those means.  Most of the  time,  on
  1005.                most machines, `lllliiiibbbbggggcccccccc....aaaa' is not actually necessary.
  1006.  
  1007.                You can get a similar result from the environment vari-
  1008.                able  GGGGCCCCCCCC____EEEEXXXXEEEECCCC____PPPPRRRREEEEFFFFIIIIXXXX;  if  it is defined, its value is
  1009.                used as a prefix in the same way.  If both the `----BBBB' op-
  1010.                tion  and the GGGGCCCCCCCC____EEEEXXXXEEEECCCC____PPPPRRRREEEEFFFFIIIIXXXX variable are present, the
  1011.                `----BBBB' option is used first and the environment  variable
  1012.                value second.
  1013.  
  1014.      WWWWAAAARRRRNNNNIIIINNNNGGGG OOOOPPPPTTTTIIIIOOOONNNNSSSS
  1015.           Warnings are diagnostic messages that  report  constructions
  1016.           which  are  not  inherently erroneous but which are risky or
  1017.           suggest there may have been an error.
  1018.  
  1019.           These options control the amount and kinds of warnings  pro-
  1020.           duced by GNU CC:
  1021.  
  1022.           ----ffffssssyyyynnnnttttaaaaxxxx----oooonnnnllllyyyy
  1023.                Check the code for syntax errors, but  don't  emit  any
  1024.                output.
  1025.  
  1026.           ----wwww   Inhibit all warning messages.
  1027.  
  1028.           ----WWWWnnnnoooo----iiiimmmmppppoooorrrrtttt
  1029.                Inhibit warning messages about the use of ####iiiimmmmppppoooorrrrtttt.
  1030.  
  1031.           ----ppppeeeeddddaaaannnnttttiiiicccc
  1032.                Issue all the warnings demanded by strict ANSI standard
  1033.                C; reject all programs that use forbidden extensions.
  1034.  
  1035.                Valid ANSI standard C programs should compile  properly
  1036.                with or without this option (though a rare few will re-
  1037.                quire `----aaaannnnssssiiii').  However, without this option,  certain
  1038.                GNU extensions and traditional C features are supported
  1039.                as well.  With this option, they are  rejected.   There
  1040.                is  no  reason  to  _u_s_e  this option; it exists only to
  1041.                satisfy pedants.
  1042.  
  1043.                `----ppppeeeeddddaaaannnnttttiiiicccc' does not cause warning messages for use  of
  1044.                the  alternate  keywords whose names begin and end with
  1045.                `________'.  Pedantic warnings are also disabled in  the  ex-
  1046.                pression  that  follows  ________eeeexxxxtttteeeennnnssssiiiioooonnnn________.   However, only
  1047.                system header files should use these escape routes; ap-
  1048.                plication programs should avoid them.
  1049.  
  1050.  
  1051.  
  1052.  
  1053.      Page 16                                         (printed 3/28/94)
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  1061.  
  1062.  
  1063.  
  1064.           ----ppppeeeeddddaaaannnnttttiiiicccc----eeeerrrrrrrroooorrrrssss
  1065.                Like `----ppppeeeeddddaaaannnnttttiiiicccc', except that errors are produced rath-
  1066.                er than warnings.
  1067.  
  1068.           ----WWWW   Print extra warning messages for these events:
  1069.  
  1070.              o+ A nonvolatile automatic variable might be changed by  a
  1071.                call  to  lllloooonnnnggggjjjjmmmmpppp.  These warnings are possible only in
  1072.                optimizing compilation.
  1073.  
  1074.                The compiler sees only the calls to sssseeeettttjjjjmmmmpppp.  It  cannot
  1075.                know  where  lllloooonnnnggggjjjjmmmmpppp  will be called; in fact, a signal
  1076.                handler could call it at any point in the code.   As  a
  1077.                result,  you  may  get  a warning even when there is in
  1078.                fact no problem  because  lllloooonnnnggggjjjjmmmmpppp  cannot  in  fact  be
  1079.                called at the place which would cause a problem.
  1080.  
  1081.              o+ A function can return either with or without  a  value.
  1082.                (Falling off the end of the function body is considered
  1083.                returning without a value.)  For example, this function
  1084.                would evoke such a warning:
  1085.  
  1086.                foo (a)
  1087.                {
  1088.                  if (a > 0)
  1089.                    return a;
  1090.                }
  1091.  
  1092.                Spurious warnings can occur because  GNU  CC  does  not
  1093.                realize  that  certain  functions  (including aaaabbbboooorrrrtttt and
  1094.                lllloooonnnnggggjjjjmmmmpppp) will never return.
  1095.  
  1096.              o+ An expression-statement contains no side effects.
  1097.  
  1098.              o+ An unsigned value is compared against zero with `>>>>'  or
  1099.                `<<<<===='.
  1100.  
  1101.           ----WWWWiiiimmmmpppplllliiiicccciiiitttt
  1102.                Warn whenever a function or parameter is implicitly de-
  1103.                clared.
  1104.  
  1105.           ----WWWWrrrreeeettttuuuurrrrnnnn----ttttyyyyppppeeee
  1106.                Warn whenever a function is defined with a  return-type
  1107.                that  defaults  to  iiiinnnntttt.   Also  warn  about any rrrreeeettttuuuurrrrnnnn
  1108.                statement with no  return-value  in  a  function  whose
  1109.                return-type is not vvvvooooiiiidddd.
  1110.  
  1111.           ----WWWWuuuunnnnuuuusssseeeedddd
  1112.                Warn whenever a local variable is unused aside from its
  1113.                declaration, whenever a function is declared static but
  1114.                never defined, and  whenever  a  statement  computes  a
  1115.                result that is explicitly not used.
  1116.  
  1117.  
  1118.  
  1119.      Page 17                                         (printed 3/28/94)
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  1127.  
  1128.  
  1129.  
  1130.           ----WWWWsssswwwwiiiittttcccchhhh
  1131.                Warn whenever  a  sssswwwwiiiittttcccchhhh  statement  has  an  index  of
  1132.                enumeral  type  and lacks a ccccaaaasssseeee for one or more of the
  1133.                named codes of that enumeration.  (The  presence  of  a
  1134.                ddddeeeeffffaaaauuuulllltttt label prevents this warning.)  ccccaaaasssseeee labels out-
  1135.                side the enumeration range also provoke  warnings  when
  1136.                this option is used.
  1137.  
  1138.           ----WWWWccccoooommmmmmmmeeeennnntttt
  1139.                Warn whenever a comment-start sequence `////****' appears  in
  1140.                a comment.
  1141.  
  1142.           ----WWWWttttrrrriiiiggggrrrraaaapppphhhhssss
  1143.                Warn if any trigraphs are  encountered  (assuming  they
  1144.                are enabled).
  1145.  
  1146.           ----WWWWffffoooorrrrmmmmaaaatttt
  1147.                Check calls to pppprrrriiiinnnnttttffff and ssssccccaaaannnnffff,  etc.,  to  make  sure
  1148.                that  the  arguments supplied have types appropriate to
  1149.                the format string specified.
  1150.  
  1151.           ----WWWWcccchhhhaaaarrrr----ssssuuuubbbbssssccccrrrriiiippppttttssss
  1152.                Warn if an array subscript has type cccchhhhaaaarrrr.   This  is  a
  1153.                common cause of error, as programmers often forget that
  1154.                this type is signed on some machines.
  1155.  
  1156.           ----WWWWuuuunnnniiiinnnniiiittttiiiiaaaalllliiiizzzzeeeedddd
  1157.                An automatic variable is used without first being  ini-
  1158.                tialized.
  1159.  
  1160.                These warnings are possible only in optimizing compila-
  1161.                tion,  because  they require data flow information that
  1162.                is computed only when optimizing.  If you don't specify
  1163.                `----OOOO', you simply won't get these warnings.
  1164.  
  1165.                These warnings occur only for variables that are candi-
  1166.                dates  for register allocation.  Therefore, they do not
  1167.                occur for a variable  that  is  declared  vvvvoooollllaaaattttiiiilllleeee,  or
  1168.                whose  address is taken, or whose size is other than 1,
  1169.                2, 4 or 8 bytes.  Also, they do not  occur  for  struc-
  1170.                tures,  unions  or arrays, even when they are in regis-
  1171.                ters.
  1172.  
  1173.                Note that there may be no warning about a variable that
  1174.                is  used  only  to compute a value that itself is never
  1175.                used, because such computations may be deleted by  data
  1176.                flow analysis before the warnings are printed.
  1177.  
  1178.                These warnings are made optional because GNU CC is  not
  1179.                smart  enough to see all the reasons why the code might
  1180.                be correct despite appearing to have an error.  Here is
  1181.                one example of how this can happen:
  1182.  
  1183.  
  1184.  
  1185.      Page 18                                         (printed 3/28/94)
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  1193.  
  1194.  
  1195.  
  1196.                {
  1197.                  int x;
  1198.                  switch (y)
  1199.                    {
  1200.                    case 1: x = 1;
  1201.                      break;
  1202.                    case 2: x = 4;
  1203.                      break;
  1204.                    case 3: x = 5;
  1205.                    }
  1206.                  foo (x);
  1207.                }
  1208.  
  1209.                If the value of yyyy is always 1, 2 or 3, then xxxx is always
  1210.                initialized,  but  GNU  CC  doesn't know this.  Here is
  1211.                another common case:
  1212.  
  1213.                {
  1214.                  int save_y;
  1215.                  if (change_y) save_y = y, y = new_y;
  1216.                  ...
  1217.                  if (change_y) y = save_y;
  1218.                }
  1219.  
  1220.                This has no bug because ssssaaaavvvveeee____yyyy is used only  if  it  is
  1221.                set.
  1222.  
  1223.                Some spurious warnings can be avoided if you declare as
  1224.                vvvvoooollllaaaattttiiiilllleeee all the functions you use that never return.
  1225.  
  1226.           ----WWWWppppaaaarrrreeeennnntttthhhheeeesssseeeessss
  1227.                Warn if parentheses are omitted in certain contexts.
  1228.  
  1229.           ----WWWWtttteeeemmmmppppllllaaaatttteeee----ddddeeeebbbbuuuuggggggggiiiinnnngggg
  1230.                When using templates in a C++ program, warn  if  debug-
  1231.                ging is not yet fully available (C++ only).
  1232.  
  1233.           ----WWWWaaaallllllll
  1234.                All of the above `----WWWW' options combined.  These are  all
  1235.                the  options  which  pertain to usage that we recommend
  1236.                avoiding and that we believe is easy to avoid, even  in
  1237.                conjunction with macros.
  1238.  
  1239.           The remaining `----WWWW............' options are not implied by `----WWWWaaaallllllll' be-
  1240.           cause they warn about constructions that we consider reason-
  1241.           able to use, on occasion, in clean programs.
  1242.  
  1243.           ----WWWWttttrrrraaaaddddiiiittttiiiioooonnnnaaaallll
  1244.                Warn about certain constructs that  behave  differently
  1245.                in traditional and ANSI C.
  1246.  
  1247.              o+ Macro arguments occurring within  string  constants  in
  1248.  
  1249.  
  1250.  
  1251.      Page 19                                         (printed 3/28/94)
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  1259.  
  1260.  
  1261.  
  1262.                the macro body.  These would substitute the argument in
  1263.                traditional C, but are part of the constant in ANSI C.
  1264.  
  1265.              o+ A function declared external in one block and then used
  1266.                after the end of the block.
  1267.  
  1268.              o+ A sssswwwwiiiittttcccchhhh statement has an operand of type lllloooonnnngggg.
  1269.  
  1270.           ----WWWWsssshhhhaaaaddddoooowwww
  1271.                Warn whenever a local variable  shadows  another  local
  1272.                variable.
  1273.  
  1274.           ----WWWWiiiidddd----ccccllllaaaasssshhhh----_l_e_n
  1275.                Warn whenever two distinct  identifiers  match  in  the
  1276.                first _l_e_n characters.  This may help you prepare a pro-
  1277.                gram that will compile with  certain  obsolete,  brain-
  1278.                damaged compilers.
  1279.  
  1280.           ----WWWWppppooooiiiinnnntttteeeerrrr----aaaarrrriiiitttthhhh
  1281.                Warn about anything that depends on the size of a func-
  1282.                tion type or of vvvvooooiiiidddd.  GNU C assigns these types a size
  1283.                of 1, for  convenience  in  calculations  with  vvvvooooiiiidddd  ****
  1284.                pointers and pointers to functions.
  1285.  
  1286.           ----WWWWccccaaaasssstttt----qqqquuuuaaaallll
  1287.                Warn whenever a pointer is cast so as to remove a  type
  1288.                qualifier from the target type.  For example, warn if a
  1289.                ccccoooonnnnsssstttt cccchhhhaaaarrrr **** is cast to an ordinary cccchhhhaaaarrrr ****.
  1290.  
  1291.           ----WWWWccccaaaasssstttt----aaaalllliiiiggggnnnn
  1292.                Warn whenever a pointer is cast such that the  required
  1293.                alignment  of  the  target  is increased.  For example,
  1294.                warn if a cccchhhhaaaarrrr **** is cast to an iiiinnnntttt **** on machines  where
  1295.                integers  can  only  be  accessed  at two- or four-byte
  1296.                boundaries.
  1297.  
  1298.           ----WWWWwwwwrrrriiiitttteeee----ssssttttrrrriiiinnnnggggssss
  1299.                Give string constants the type  ccccoooonnnnsssstttt  cccchhhhaaaarrrr[[[[_l_e_n_g_t_h]]]]  so
  1300.                that copying the address of one into a non-ccccoooonnnnsssstttt cccchhhhaaaarrrr ****
  1301.                pointer will get a warning.  These warnings  will  help
  1302.                you  find  at  compile  time code that can try to write
  1303.                into a string constant, but only if you have been  very
  1304.                careful  about  using  ccccoooonnnnsssstttt in declarations and proto-
  1305.                types.  Otherwise, it will just be a nuisance; this  is
  1306.                why we did not make `----WWWWaaaallllllll' request these warnings.
  1307.  
  1308.           ----WWWWccccoooonnnnvvvveeeerrrrssssiiiioooonnnn
  1309.                Warn if a prototype causes a type  conversion  that  is
  1310.                different  from  what would happen to the same argument
  1311.                in the absence of a prototype.  This  includes  conver-
  1312.                sions  of  fixed  point to floating and vice versa, and
  1313.                conversions changing the width or signedness of a fixed
  1314.  
  1315.  
  1316.  
  1317.      Page 20                                         (printed 3/28/94)
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  1325.  
  1326.  
  1327.  
  1328.                point argument except when the same as the default pro-
  1329.                motion.
  1330.  
  1331.           ----WWWWaaaaggggggggrrrreeeeggggaaaatttteeee----rrrreeeettttuuuurrrrnnnn
  1332.                Warn if any functions that return structures or  unions
  1333.                are defined or called.  (In languages where you can re-
  1334.                turn an array, this also elicits a warning.)
  1335.  
  1336.           ----WWWWssssttttrrrriiiicccctttt----pppprrrroooottttoooottttyyyyppppeeeessss
  1337.                Warn if a  function  is  declared  or  defined  without
  1338.                specifying  the argument types.  (An old-style function
  1339.                definition is permitted without a warning  if  preceded
  1340.                by a declaration which specifies the argument types.)
  1341.  
  1342.           ----WWWWmmmmiiiissssssssiiiinnnngggg----pppprrrroooottttoooottttyyyyppppeeeessss
  1343.                Warn if a global function is defined without a previous
  1344.                prototype  declaration.  This warning is issued even if
  1345.                the definition itself provides a prototype.  The aim is
  1346.                to  detect global functions that fail to be declared in
  1347.                header files.
  1348.  
  1349.           ----WWWWrrrreeeedddduuuunnnnddddaaaannnntttt----ddddeeeeccccllllssss
  1350.                Warn if anything is declared more than once in the same
  1351.                scope,  even  in  cases  where  multiple declaration is
  1352.                valid and changes nothing.
  1353.  
  1354.           ----WWWWnnnneeeesssstttteeeedddd----eeeexxxxtttteeeerrrrnnnnssss
  1355.                Warn if an eeeexxxxtttteeeerrrrnnnn declaration is encountered within  an
  1356.                function.
  1357.  
  1358.           ----WWWWeeeennnnuuuummmm----ccccllllaaaasssshhhh
  1359.                Warn about  conversion  between  different  enumeration
  1360.                types (C++ only).
  1361.  
  1362.           ----WWWWoooovvvveeeerrrrllllooooaaaaddddeeeedddd----vvvviiiirrrrttttuuuuaaaallll
  1363.                (C++ only.) In a derived class, the definitions of vir-
  1364.                tual  functions must match the type signature of a vir-
  1365.                tual function declared in the base class.  Use this op-
  1366.                tion  to request warnings when a derived class declares
  1367.                a function that may be an erroneous attempt to define a
  1368.                virtual  function:  that  is, warn when a function with
  1369.                the same name as a virtual function in the base  class,
  1370.                but with a type signature that doesn't match any virtu-
  1371.                al functions from the base class.
  1372.  
  1373.           ----WWWWiiiinnnnlllliiiinnnneeee
  1374.                Warn if a function can not be inlined,  and  either  it
  1375.                was  declared as inline, or else the ----ffffiiiinnnnlllliiiinnnneeee----ffffuuuunnnnccccttttiiiioooonnnnssss
  1376.                option was given.
  1377.  
  1378.           ----WWWWeeeerrrrrrrroooorrrr
  1379.                Treat warnings as errors; abort compilation  after  any
  1380.  
  1381.  
  1382.  
  1383.      Page 21                                         (printed 3/28/94)
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  1391.  
  1392.  
  1393.  
  1394.                warning.
  1395.  
  1396.      DDDDEEEEBBBBUUUUGGGGGGGGIIIINNNNGGGG OOOOPPPPTTTTIIIIOOOONNNNSSSS
  1397.           GNU CC has various special options that are used for  debug-
  1398.           ging either your program or GCC:
  1399.  
  1400.           ----gggg   Produce debugging information in the operating system's
  1401.                native  format (stabs, COFF, XCOFF, or DWARF).  GDB can
  1402.                work with this debugging information.
  1403.  
  1404.                On most systems that use stabs format, `----gggg' enables use
  1405.                of  extra  debugging information that only GDB can use;
  1406.                this extra information makes debugging work  better  in
  1407.                GDB but will probably make other debuggers crash or re-
  1408.                fuse to read the program.  If you want to  control  for
  1409.                certain  whether to generate the extra information, use
  1410.                `----ggggssssttttaaaabbbbssss++++',    `----ggggssssttttaaaabbbbssss',    `----ggggxxxxccccooooffffffff++++',     `----ggggxxxxccccooooffffffff',
  1411.                `----ggggddddwwwwaaaarrrrffff++++', or `----ggggddddwwwwaaaarrrrffff' (see below).
  1412.  
  1413.                Unlike most other C compilers, GNU CC allows you to use
  1414.                `----gggg'  with `----OOOO'.  The shortcuts taken by optimized code
  1415.                may occasionally produce surprising results: some vari-
  1416.                ables  you  declared may not exist at all; flow of con-
  1417.                trol may briefly move where you did not expect it; some
  1418.                statements  may  not  be  executed because they compute
  1419.                constant results or their values were already at  hand;
  1420.                some statements may execute in different places because
  1421.                they were moved out of loops.
  1422.  
  1423.                Nevertheless it proves possible to debug optimized out-
  1424.                put.  This makes it reasonable to use the optimizer for
  1425.                programs that might have bugs.
  1426.  
  1427.           The following options are useful when GNU  CC  is  generated
  1428.           with the capability for more than one debugging format.
  1429.  
  1430.           ----ggggggggddddbbbb
  1431.                Produce debugging information in the native format  (if
  1432.                that  is supported), including GDB extensions if at all
  1433.                possible.
  1434.  
  1435.           ----ggggssssttttaaaabbbbssss
  1436.                Produce debugging information in stabs format (if  that
  1437.                is  supported),  without  GDB  extensions.  This is the
  1438.                format used by DBX on most BSD systems.
  1439.  
  1440.           ----ggggssssttttaaaabbbbssss++++
  1441.                Produce debugging information in stabs format (if  that
  1442.                is  supported), using GNU extensions understood only by
  1443.                the GNU debugger (GDB).  The use of these extensions is
  1444.                likely  to make other debuggers crash or refuse to read
  1445.                the program.
  1446.  
  1447.  
  1448.  
  1449.      Page 22                                         (printed 3/28/94)
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  1457.  
  1458.  
  1459.  
  1460.           ----ggggccccooooffffffff
  1461.                Produce debugging information in COFF format  (if  that
  1462.                is  supported).  This is the format used by SDB on most
  1463.                System V systems prior to System V Release 4.
  1464.  
  1465.           ----ggggxxxxccccooooffffffff
  1466.                Produce debugging information in XCOFF format (if  that
  1467.                is  supported).  This is the format used by the DBX de-
  1468.                bugger on IBM RS/6000 systems.
  1469.  
  1470.           ----ggggxxxxccccooooffffffff++++
  1471.                Produce debugging information in XCOFF format (if  that
  1472.                is  supported), using GNU extensions understood only by
  1473.                the GNU debugger (GDB).  The use of these extensions is
  1474.                likely  to make other debuggers crash or refuse to read
  1475.                the program.
  1476.  
  1477.           ----ggggddddwwwwaaaarrrrffff
  1478.                Produce debugging information in DWARF format (if  that
  1479.                is  supported).  This is the format used by SDB on most
  1480.                System V Release 4 systems.
  1481.  
  1482.           ----ggggddddwwwwaaaarrrrffff++++
  1483.                Produce debugging information in DWARF format (if  that
  1484.                is  supported), using GNU extensions understood only by
  1485.                the GNU debugger (GDB).  The use of these extensions is
  1486.                likely  to make other debuggers crash or refuse to read
  1487.                the program.
  1488.  
  1489.           ----gggg_l_e_v_e_l
  1490.           ----ggggggggddddbbbb_l_e_v_e_l
  1491.           ----ggggssssttttaaaabbbbssss_l_e_v_e_l
  1492.           ----ggggccccooooffffffff_l_e_v_e_l ----ggggxxxxccccooooffffffff_l_e_v_e_l
  1493.  
  1494.           ----ggggddddwwwwaaaarrrrffff_l_e_v_e_l
  1495.                Request debugging information and  also  use  _l_e_v_e_l  to
  1496.                specify how much information.  The default level is 2.
  1497.  
  1498.                Level 1 produces minimal information, enough for making
  1499.                backtraces  in parts of the program that you don't plan
  1500.                to debug.  This includes descriptions of functions  and
  1501.                external  variables,  but  no  information  about local
  1502.                variables and no line numbers.
  1503.  
  1504.                Level 3 includes extra information,  such  as  all  the
  1505.                macro  definitions  present  in  the program.  Some de-
  1506.                buggers support macro expansion when you use `----gggg3333'.
  1507.  
  1508.           ----pppp   Generate extra code to write profile information  suit-
  1509.                able for the analysis program pppprrrrooooffff.
  1510.  
  1511.           ----ppppgggg  Generate extra code to write profile information  suit-
  1512.  
  1513.  
  1514.  
  1515.      Page 23                                         (printed 3/28/94)
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  1523.  
  1524.  
  1525.  
  1526.                able for the analysis program ggggpppprrrrooooffff.
  1527.  
  1528.           ----aaaa   Generate extra code to write  profile  information  for
  1529.                basic  blocks,  which  will  record the number of times
  1530.                each basic block  is  executed.   This  data  could  be
  1531.                analyzed  by  a program like ttttccccoooovvvv.  Note, however, that
  1532.                the format of the data is not what ttttccccoooovvvv expects.  Even-
  1533.                tually  GNU  ggggpppprrrrooooffff  should  be extended to process this
  1534.                data.
  1535.  
  1536.           ----dddd_l_e_t_t_e_r_s
  1537.                Says to make  debugging  dumps  during  compilation  at
  1538.                times specified by _l_e_t_t_e_r_s.  This is used for debugging
  1539.                the compiler.  The file names for most of the dumps are
  1540.                made  by appending a word to the source file name (e.g.
  1541.                `ffffoooooooo....cccc....rrrrttttllll' or `ffffoooooooo....cccc....jjjjuuuummmmpppp').
  1542.  
  1543.           ----ddddMMMM  Dump all macro definitions, at the end  of  preprocess-
  1544.                ing, and write no output.
  1545.  
  1546.           ----ddddNNNN  Dump all macro names, at the end of preprocessing.
  1547.  
  1548.           ----ddddDDDD  Dump all macro definitions, at the end  of  preprocess-
  1549.                ing, in addition to normal output.
  1550.  
  1551.           ----ddddyyyy  Dump debugging information during parsing, to  standard
  1552.                error.
  1553.  
  1554.           ----ddddrrrr  Dump after RTL generation, to `_f_i_l_e....rrrrttttllll'.
  1555.  
  1556.           ----ddddxxxx  Just generate RTL for a function instead  of  compiling
  1557.                it.  Usually used with `rrrr'.
  1558.  
  1559.           ----ddddjjjj  Dump after first jump optimization, to `_f_i_l_e....jjjjuuuummmmpppp'.
  1560.  
  1561.           ----ddddssss  Dump after CSE (including the  jump  optimization  that
  1562.                sometimes follows CSE), to `_f_i_l_e....ccccsssseeee'.
  1563.  
  1564.           ----ddddLLLL  Dump after loop optimization, to `_f_i_l_e....lllloooooooopppp'.
  1565.  
  1566.           ----ddddtttt  Dump after the second CSE pass (including the jump  op-
  1567.                timization that sometimes follows CSE), to `_f_i_l_e....ccccsssseeee2222'.
  1568.  
  1569.           ----ddddffff  Dump after flow analysis, to `_f_i_l_e....fffflllloooowwww'.
  1570.  
  1571.           ----ddddcccc  Dump after instruction combination, to `_f_i_l_e....ccccoooommmmbbbbiiiinnnneeee'.
  1572.  
  1573.           ----ddddSSSS  Dump after the first instruction  scheduling  pass,  to
  1574.                `_f_i_l_e....sssscccchhhheeeedddd'.
  1575.  
  1576.           ----ddddllll  Dump after local register allocation, to `_f_i_l_e....llllrrrreeeegggg'.
  1577.  
  1578.  
  1579.  
  1580.  
  1581.      Page 24                                         (printed 3/28/94)
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  1589.  
  1590.  
  1591.  
  1592.           ----ddddgggg  Dump after global register allocation, to `_f_i_l_e....ggggrrrreeeegggg'.
  1593.  
  1594.           ----ddddRRRR  Dump after the second instruction scheduling  pass,  to
  1595.                `_f_i_l_e....sssscccchhhheeeedddd2222'.
  1596.  
  1597.           ----ddddJJJJ  Dump after last jump optimization, to `_f_i_l_e....jjjjuuuummmmpppp2222'.
  1598.  
  1599.           ----dddddddd  Dump after delayed branch scheduling, to `_f_i_l_e....ddddbbbbrrrr'.
  1600.  
  1601.           ----ddddkkkk  Dump after  conversion  from  registers  to  stack,  to
  1602.                `_f_i_l_e....ssssttttaaaacccckkkk'.
  1603.  
  1604.           ----ddddaaaa  Produce all the dumps listed above.
  1605.  
  1606.           ----ddddmmmm  Print statistics on memory usage, at  the  end  of  the
  1607.                run, to standard error.
  1608.  
  1609.           ----ddddpppp  Annotate the assembler output with a comment indicating
  1610.                which pattern and alternative was used.
  1611.  
  1612.           ----ffffpppprrrreeeetttteeeennnndddd----ffffllllooooaaaatttt
  1613.                When running a cross-compiler, pretend that the  target
  1614.                machine uses the same floating point format as the host
  1615.                machine.  This causes incorrect output  of  the  actual
  1616.                floating constants, but the actual instruction sequence
  1617.                will probably be the same as GNU  CC  would  make  when
  1618.                running on the target machine.
  1619.  
  1620.           ----ssssaaaavvvveeee----tttteeeemmmmppppssss
  1621.                Store the usual temporary intermediate files permanent-
  1622.                ly;  place  them in the current directory and name them
  1623.                based on the source file.  Thus, compiling `ffffoooooooo....cccc' with
  1624.                `----cccc  ----ssssaaaavvvveeee----tttteeeemmmmppppssss'  would  produce  files  `ffffoooooooo....ccccpppppppp' and
  1625.                `ffffoooooooo....ssss', as well as `ffffoooooooo....oooo'.
  1626.  
  1627.           ----pppprrrriiiinnnntttt----lllliiiibbbbggggcccccccc----ffffiiiilllleeee----nnnnaaaammmmeeee
  1628.                Print the  full  absolute  name  of  the  library  file
  1629.                `lllliiiibbbbggggcccccccc....aaaa'  that  would be used when linking-and do not
  1630.                do anything else.  With this option, GNU  CC  does  not
  1631.                compile or link anything; it just prints the file name.
  1632.  
  1633.      OOOOPPPPTTTTIIIIMMMMIIIIZZZZAAAATTTTIIIIOOOONNNN OOOOPPPPTTTTIIIIOOOONNNNSSSS
  1634.           These options control various sorts of optimizations:
  1635.  
  1636.           ----OOOO
  1637.  
  1638.           ----OOOO1111  Optimize.  Optimizing compilation takes  somewhat  more
  1639.                time, and a lot more memory for a large function.
  1640.  
  1641.                Without `----OOOO', the compiler's goal is to reduce the cost
  1642.                of  compilation  and  to make debugging produce the ex-
  1643.                pected results.  Statements  are  independent:  if  you
  1644.  
  1645.  
  1646.  
  1647.      Page 25                                         (printed 3/28/94)
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  1655.  
  1656.  
  1657.  
  1658.                stop  the program with a breakpoint between statements,
  1659.                you can then assign a new  value  to  any  variable  or
  1660.                change  the  program  counter to any other statement in
  1661.                the function and get exactly the results you would  ex-
  1662.                pect from the source code.
  1663.  
  1664.                Without `----OOOO', only variables declared rrrreeeeggggiiiisssstttteeeerrrr are  al-
  1665.                located in registers.  The resulting compiled code is a
  1666.                little worse than produced by PCC without `----OOOO'.
  1667.  
  1668.                With `----OOOO', the compiler tries to reduce code  size  and
  1669.                execution time.
  1670.  
  1671.                When   you   specify   `----OOOO',    `----fffftttthhhhrrrreeeeaaaadddd----jjjjuuuummmmppppssss'    and
  1672.                `----ffffddddeeeellllaaaayyyyeeeedddd----bbbbrrrraaaannnncccchhhh'  are  turned  on.   On some machines
  1673.                other flags may also be turned on.
  1674.  
  1675.           ----OOOO2222  Optimize even more.  Nearly all supported optimizations
  1676.                that  do  not  involve  a space-speed tradeoff are per-
  1677.                formed.  As compared to ----OOOO, this option increases  both
  1678.                compilation  time  and the performance of the generated
  1679.                code.
  1680.  
  1681.                ----OOOO2222 turns on all ----ffff_f_l_a_g options that enable more optim-
  1682.                ization,  except for ----ffffuuuunnnnrrrroooollllllll----llllooooooooppppssss, ----ffffuuuunnnnrrrroooollllllll----aaaallllllll----llllooooooooppppssss
  1683.                and ----ffffoooommmmiiiitttt----ffffrrrraaaammmmeeee----ppppooooiiiinnnntttteeeerrrr.
  1684.  
  1685.           ----OOOO0000  Do not optimize.
  1686.  
  1687.                If you use multiple ----OOOO options, with or  without  level
  1688.                numbers, the last such option is the one that is effec-
  1689.                tive.
  1690.  
  1691.           Options of the  form  `----ffff_f_l_a_g'  specify  machine-independent
  1692.           flags.   Most  flags  have both positive and negative forms;
  1693.           the negative form of `----ffffffffoooooooo' would be `----ffffnnnnoooo----ffffoooooooo'.  The  fol-
  1694.           lowing list shows only one form-the one which is not the de-
  1695.           fault.  You can figure out the other form by either removing
  1696.           `nnnnoooo----' or adding it.
  1697.  
  1698.           ----ffffffffllllooooaaaatttt----ssssttttoooorrrreeee
  1699.                Do not store floating  point  variables  in  registers.
  1700.                This  prevents undesirable excess precision on machines
  1701.                such as the 68000 where the floating registers (of  the
  1702.                68881) keep more precision than a ddddoooouuuubbbblllleeee is supposed to
  1703.                have.
  1704.  
  1705.                For most programs, the excess precision does only good,
  1706.                but  a  few  programs rely on the precise definition of
  1707.                IEEE floating point.  Use `----ffffffffllllooooaaaatttt----ssssttttoooorrrreeee' for such pro-
  1708.                grams.
  1709.  
  1710.  
  1711.  
  1712.  
  1713.      Page 26                                         (printed 3/28/94)
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  1721.  
  1722.  
  1723.  
  1724.           ----ffffmmmmeeeemmmmooooiiiizzzzeeee----llllooooooookkkkuuuuppppssss
  1725.  
  1726.           ----ffffssssaaaavvvveeee----mmmmeeeemmmmooooiiiizzzzeeeedddd
  1727.                Use heuristics to compile  faster  (C++  only).   These
  1728.                heuristics  are  not enabled by default, since they are
  1729.                only effective for certain input  files.   Other  input
  1730.                files compile more slowly.
  1731.  
  1732.                The first time the compiler must  build  a  call  to  a
  1733.                member  function  (or  reference  to a data member), it
  1734.                must (1) determine whether the class implements  member
  1735.                functions  of that name; (2) resolve which member func-
  1736.                tion to call (which involves figuring out what sorts of
  1737.                type  conversions  need  to be made); and (3) check the
  1738.                visibility of the member function to the  caller.   All
  1739.                of  this  adds up to slower compilation.  Normally, the
  1740.                second time a call is made to that member function  (or
  1741.                reference  to that data member), it must go through the
  1742.                same lengthy process again.  This means that code  like
  1743.                this
  1744.  
  1745.                  cout << "This " << p << " has " << n << " legs.\n";
  1746.  
  1747.                makes six passes through all three steps.  By  using  a
  1748.                software  cache, a hit significantly reduces this cost.
  1749.                Unfortunately, using the cache introduces another layer
  1750.                of  mechanisms which must be implemented, and so incurs
  1751.                its  own  overhead.   `----ffffmmmmeeeemmmmooooiiiizzzzeeee----llllooooooookkkkuuuuppppssss'  enables  the
  1752.                software cache.
  1753.  
  1754.                Because access privileges (visibility) to  members  and
  1755.                member  functions  may differ from one function context
  1756.                to the next, gggg++++++++ may need to flush the cache.  With the
  1757.                `----ffffmmmmeeeemmmmooooiiiizzzzeeee----llllooooooookkkkuuuuppppssss'  flag,  the  cache is flushed after
  1758.                every function that is compiled.  The `-fsave-memoized'
  1759.                flag enables the same software cache, but when the com-
  1760.                piler determines that the context of the last  function
  1761.                compiled  would yield the same access privileges of the
  1762.                next function to compile, it preserves the cache.  This
  1763.                is most helpful when defining many member functions for
  1764.                the same class: with the exception of member  functions
  1765.                which  are  friends of other classes, each member func-
  1766.                tion has exactly the same access  privileges  as  every
  1767.                other, and the cache need not be flushed.
  1768.  
  1769.           ----ffffnnnnoooo----ddddeeeeffffaaaauuuulllltttt----iiiinnnnlllliiiinnnneeee
  1770.                Don't make member functions inline  by  default  merely
  1771.                because  they  are  defined inside the class scope (C++
  1772.                only).
  1773.  
  1774.           ----ffffnnnnoooo----ddddeeeeffffeeeerrrr----ppppoooopppp
  1775.                Always pop the arguments to each function call as  soon
  1776.  
  1777.  
  1778.  
  1779.      Page 27                                         (printed 3/28/94)
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  1787.  
  1788.  
  1789.  
  1790.                as  that function returns.  For machines which must pop
  1791.                arguments after a function call, the compiler  normally
  1792.                lets  arguments  accumulate  on  the  stack for several
  1793.                function calls and pops them all at once.
  1794.  
  1795.           ----ffffffffoooorrrrcccceeee----mmmmeeeemmmm
  1796.                Force memory operands to be copied into  registers  be-
  1797.                fore doing arithmetic on them.  This may produce better
  1798.                code by making all memory references  potential  common
  1799.                subexpressions.   When  they  are not common subexpres-
  1800.                sions, instruction  combination  should  eliminate  the
  1801.                separate  register-load.   I  am  interested in hearing
  1802.                about the difference this makes.
  1803.  
  1804.           ----ffffffffoooorrrrcccceeee----aaaaddddddddrrrr
  1805.                Force memory address constants to be copied into regis-
  1806.                ters before doing arithmetic on them.  This may produce
  1807.                better code just as `----ffffffffoooorrrrcccceeee----mmmmeeeemmmm' may.  I am interested
  1808.                in hearing about the difference this makes.
  1809.  
  1810.           ----ffffoooommmmiiiitttt----ffffrrrraaaammmmeeee----ppppooooiiiinnnntttteeeerrrr
  1811.                Don't keep the frame pointer in a  register  for  func-
  1812.                tions  that  don't  need one.  This avoids the instruc-
  1813.                tions to save, set up and restore  frame  pointers;  it
  1814.                also  makes  an  extra register available in many func-
  1815.                tions.  _I_t _a_l_s_o  _m_a_k_e_s  _d_e_b_u_g_g_i_n_g  _i_m_p_o_s_s_i_b_l_e  _o_n  most
  1816.                machines.
  1817.  
  1818.                On some machines, such as the Vax, this flag has no ef-
  1819.                fect,  because  the standard calling sequence automati-
  1820.                cally handles the frame pointer and nothing is saved by
  1821.                pretending  it  doesn't exist.  The machine-description
  1822.                macro FFFFRRRRAAAAMMMMEEEE____PPPPOOOOIIIINNNNTTTTEEEERRRR____RRRREEEEQQQQUUUUIIIIRRRREEEEDDDD controls whether a  target
  1823.                machine supports this flag.
  1824.  
  1825.           ----ffffiiiinnnnlllliiiinnnneeee----ffffuuuunnnnccccttttiiiioooonnnnssss
  1826.                Integrate all simple functions into their callers.  The
  1827.                compiler heuristically decides which functions are sim-
  1828.                ple enough to be worth integrating in this way.
  1829.  
  1830.                If all calls to a given function  are  integrated,  and
  1831.                the function is declared ssssttttaaaattttiiiicccc, then GCC normally does
  1832.                not output the function as assembler code  in  its  own
  1833.                right.
  1834.  
  1835.           ----ffffccccaaaalllllllleeeerrrr----ssssaaaavvvveeeessss
  1836.                Enable values to be allocated in registers that will be
  1837.                clobbered by function calls, by emitting extra instruc-
  1838.                tions to save and restore  the  registers  around  such
  1839.                calls.   Such  allocation is done only when it seems to
  1840.                result in better code than would otherwise be produced.
  1841.  
  1842.  
  1843.  
  1844.  
  1845.      Page 28                                         (printed 3/28/94)
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  1853.  
  1854.  
  1855.  
  1856.                This option is enabled by default on certain  machines,
  1857.                usually those which have no call-preserved registers to
  1858.                use instead.
  1859.  
  1860.           ----ffffkkkkeeeeeeeepppp----iiiinnnnlllliiiinnnneeee----ffffuuuunnnnccccttttiiiioooonnnnssss
  1861.                Even if all calls to a given function  are  integrated,
  1862.                and  the function is declared ssssttttaaaattttiiiicccc, nevertheless out-
  1863.                put a separate run-time callable version of  the  func-
  1864.                tion.
  1865.  
  1866.           ----ffffnnnnoooo----ffffuuuunnnnccccttttiiiioooonnnn----ccccsssseeee
  1867.                Do not put function addresses in registers;  make  each
  1868.                instruction  that calls a constant function contain the
  1869.                function's address explicitly.
  1870.  
  1871.                This option results in less efficient  code,  but  some
  1872.                strange  hacks  that  alter the assembler output may be
  1873.                confused by the optimizations performed when  this  op-
  1874.                tion is not used.
  1875.  
  1876.           ----ffffnnnnoooo----ppppeeeeeeeepppphhhhoooolllleeee
  1877.                Disable any machine-specific peephole optimizations.
  1878.  
  1879.           ----ffffffffaaaasssstttt----mmmmaaaatttthhhh
  1880.                This option allows GCC to violate  some  ANSI  or  IEEE
  1881.                rules/specifications in the interest of optimizing code
  1882.                for speed.  For example, it allows the compiler to  as-
  1883.                sume  arguments  to  the ssssqqqqrrrrtttt function are non-negative
  1884.                numbers.
  1885.  
  1886.                This option should never be turned on by any  `----OOOO'  op-
  1887.                tion  since  it can result in incorrect output for pro-
  1888.                grams which depend on an exact implementation  of  IEEE
  1889.                or ANSI rules/specifications for math functions.
  1890.  
  1891.           The following options control specific  optimizations.   The
  1892.           `----OOOO2222'  option  turns  on  all  of these optimizations except
  1893.           `----ffffuuuunnnnrrrroooollllllll----llllooooooooppppssss' and `----ffffuuuunnnnrrrroooollllllll----aaaallllllll----llllooooooooppppssss'.
  1894.  
  1895.           The `----OOOO' option usually turns on  the  `----fffftttthhhhrrrreeeeaaaadddd----jjjjuuuummmmppppssss'  and
  1896.           `----ffffddddeeeellllaaaayyyyeeeedddd----bbbbrrrraaaannnncccchhhh' options, but specific machines may change
  1897.           the default optimizations.
  1898.  
  1899.           You can use the following  flags  in  the  rare  cases  when
  1900.           fine-tuning of optimizations to be performed is desired.
  1901.  
  1902.           ----ffffssssttttrrrreeeennnnggggtttthhhh----rrrreeeedddduuuucccceeee
  1903.                Perform the optimizations of  loop  strength  reduction
  1904.                and elimination of iteration variables.
  1905.  
  1906.           ----fffftttthhhhrrrreeeeaaaadddd----jjjjuuuummmmppppssss
  1907.                Perform optimizations where we check to see if  a  jump
  1908.  
  1909.  
  1910.  
  1911.      Page 29                                         (printed 3/28/94)
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  1919.  
  1920.  
  1921.  
  1922.                branches  to  a  location where another comparison sub-
  1923.                sumed by the first is found.  If so, the  first  branch
  1924.                is  redirected  to either the destination of the second
  1925.                branch or a point immediately following  it,  depending
  1926.                on whether the condition is known to be true or false.
  1927.  
  1928.           ----ffffuuuunnnnrrrroooollllllll----llllooooooooppppssss
  1929.                Perform the optimization of loop  unrolling.   This  is
  1930.                only  done  for loops whose number of iterations can be
  1931.                determined at compile time or run time.
  1932.  
  1933.           ----ffffuuuunnnnrrrroooollllllll----aaaallllllll----llllooooooooppppssss
  1934.                Perform the optimization of loop  unrolling.   This  is
  1935.                done  for  all  loops.  This usually makes programs run
  1936.                more slowly.
  1937.  
  1938.           ----ffffccccsssseeee----ffffoooolllllllloooowwww----jjjjuuuummmmppppssss
  1939.                In common subexpression elimination, scan through  jump
  1940.                instructions when the target of the jump is not reached
  1941.                by any other path.  For example, when CSE encounters an
  1942.                iiiiffff  statement  with an eeeellllsssseeee clause, CSE will follow the
  1943.                jump when the condition tested is false.
  1944.  
  1945.           ----ffffccccsssseeee----sssskkkkiiiipppp----bbbblllloooocccckkkkssss
  1946.                This is similar to `----ffffccccsssseeee----ffffoooolllllllloooowwww----jjjjuuuummmmppppssss', but causes CSE
  1947.                to  follow  jumps which conditionally skip over blocks.
  1948.                When CSE encounters a simple iiiiffff statement with no  else
  1949.                clause,  `----ffffccccsssseeee----sssskkkkiiiipppp----bbbblllloooocccckkkkssss'  causes  CSE to follow the
  1950.                jump around the body of the iiiiffff.
  1951.  
  1952.           ----ffffrrrreeeerrrruuuunnnn----ccccsssseeee----aaaafffftttteeeerrrr----lllloooooooopppp
  1953.                Re-run common subexpression elimination after loop  op-
  1954.                timizations has been performed.
  1955.  
  1956.           ----ffffeeeelllliiiiddddeeee----ccccoooonnnnssssttttrrrruuuuccccttttoooorrrrssss
  1957.                Elide  constructors  when  this  seems  plausible  (C++
  1958.                only).   With this flag, GNU C++ initializes yyyy directly
  1959.                from the call to ffffoooooooo without going through a  temporary
  1960.                in the following code:
  1961.  
  1962.                A foo (); A y = foo ();
  1963.  
  1964.                Without this option, GNU C++  first  initializes  yyyy  by
  1965.                calling  the  appropriate  constructor for type AAAA; then
  1966.                assigns the result of ffffoooooooo to a temporary; and, finally,
  1967.                replaces the initial valyue of `yyyy' with the temporary.
  1968.  
  1969.                The  default  behavior  (`----ffffnnnnoooo----eeeelllliiiiddddeeee----ccccoooonnnnssssttttrrrruuuuccccttttoooorrrrssss')  is
  1970.                specified  by  the  draft  ANSI  C++ standard.  If your
  1971.                program's  constructors  have   side   effects,   using
  1972.                `----ffffeeeelllliiiiddddeeee----ccccoooonnnnssssttttrrrruuuuccccttttoooorrrrssss'  can  make your program act dif-
  1973.                ferently, since some constructor calls may be omitted.
  1974.  
  1975.  
  1976.  
  1977.      Page 30                                         (printed 3/28/94)
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  1985.  
  1986.  
  1987.  
  1988.           ----ffffeeeexxxxppppeeeennnnssssiiiivvvveeee----ooooppppttttiiiimmmmiiiizzzzaaaattttiiiioooonnnnssss
  1989.                Perform a number of minor optimizations that are  rela-
  1990.                tively expensive.
  1991.  
  1992.           ----ffffddddeeeellllaaaayyyyeeeedddd----bbbbrrrraaaannnncccchhhh
  1993.                If supported for the target machine, attempt to reorder
  1994.                instructions  to  exploit  instruction  slots available
  1995.                after delayed branch instructions.
  1996.  
  1997.           ----ffffsssscccchhhheeeedddduuuulllleeee----iiiinnnnssssnnnnssss
  1998.                If supported for the target machine, attempt to reorder
  1999.                instructions  to  eliminate execution stalls due to re-
  2000.                quired data being  unavailable.   This  helps  machines
  2001.                that  have  slow floating point or memory load instruc-
  2002.                tions by allowing other instructions to be issued until
  2003.                the result of the load or floating point instruction is
  2004.                required.
  2005.  
  2006.           ----ffffsssscccchhhheeeedddduuuulllleeee----iiiinnnnssssnnnnssss2222
  2007.                Similar to `----ffffsssscccchhhheeeedddduuuulllleeee----iiiinnnnssssnnnnssss', but  requests  an  addi-
  2008.                tional  pass  of  instruction scheduling after register
  2009.                allocation has been done.  This is especially useful on
  2010.                machines  with  a  relatively small number of registers
  2011.                and where memory load instructions take more  than  one
  2012.                cycle.
  2013.  
  2014.      TTTTAAAARRRRGGGGEEEETTTT OOOOPPPPTTTTIIIIOOOONNNNSSSS
  2015.           By default, GNU CC  compiles  code  for  the  same  type  of
  2016.           machine  that  you  are  using.  However, it can also be in-
  2017.           stalled as a cross-compiler, to compile for some other  type
  2018.           of  machine.   In  fact, several different configurations of
  2019.           GNU CC, for different target machines, can be installed side
  2020.           by  side.   Then  you specify which one to use with the `----bbbb'
  2021.           option.
  2022.  
  2023.           In addition, older and newer versions of GNU CC can  be  in-
  2024.           stalled  side  by  side.   One of them (probably the newest)
  2025.           will be the default, but  you  may  sometimes  wish  to  use
  2026.           another.
  2027.  
  2028.           ----bbbb _m_a_c_h_i_n_e
  2029.                The argument _m_a_c_h_i_n_e specifies the target  machine  for
  2030.                compilation.   This  is  useful when you have installed
  2031.                GNU CC as a cross-compiler.
  2032.  
  2033.                The value to use for _m_a_c_h_i_n_e is the same as was  speci-
  2034.                fied  as  the machine type when configuring GNU CC as a
  2035.                cross-compiler.  For example, if a  cross-compiler  was
  2036.                configured  with  `ccccoooonnnnffffiiiigggguuuurrrreeee i386v', meaning to compile
  2037.                for an 80386 running System V, then you  would  specify
  2038.                `----bbbb iiii333388886666vvvv' to run that cross compiler.
  2039.  
  2040.  
  2041.  
  2042.  
  2043.      Page 31                                         (printed 3/28/94)
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  2051.  
  2052.  
  2053.  
  2054.                When you do not specify `----bbbb', it normally means to com-
  2055.                pile for the same type of machine that you are using.
  2056.  
  2057.           ----VVVV _v_e_r_s_i_o_n
  2058.                The argument _v_e_r_s_i_o_n specifies which version of GNU  CC
  2059.                to  run.  This is useful when multiple versions are in-
  2060.                stalled.  For example, _v_e_r_s_i_o_n might be `2222....0000',  meaning
  2061.                to run GNU CC version 2.0.
  2062.  
  2063.                The default version, when you do not specify  `----VVVV',  is
  2064.                controlled  by  the way GNU CC is installed.  Normally,
  2065.                it will be a version that is  recommended  for  general
  2066.                use.
  2067.  
  2068.      MMMMAAAACCCCHHHHIIIINNNNEEEE DDDDEEEEPPPPEEEENNNNDDDDEEEENNNNTTTT OOOOPPPPTTTTIIIIOOOONNNNSSSS
  2069.           Each of the target machine types can have  its  own  special
  2070.           options,   starting  with  `----mmmm',  to  choose  among  various
  2071.           hardware models  or  configurations-for  example,  68010  vs
  2072.           68020,  floating  coprocessor  or  none.  A single installed
  2073.           version of the compiler can compile for any model or  confi-
  2074.           guration, according to the options specified.
  2075.  
  2076.           Some configurations of the compiler also support  additional
  2077.           special options, usually for command-line compatibility with
  2078.           other compilers on the same platform.
  2079.  
  2080.           These are the `----mmmm' options defined for the 68000 series:
  2081.  
  2082.           ----mmmm66668888000000000000
  2083.  
  2084.           ----mmmmcccc66668888000000000000
  2085.                Generate output for a 68000.  This is the default  when
  2086.                the compiler is configured for 68000-based systems.
  2087.  
  2088.           ----mmmm66668888000022220000
  2089.  
  2090.           ----mmmmcccc66668888000022220000
  2091.                Generate output for a  68020  (rather  than  a  68000).
  2092.                This is the default when the compiler is configured for
  2093.                68020-based systems.
  2094.  
  2095.           ----mmmm66668888888888881111
  2096.                Generate  output  containing  68881  instructions   for
  2097.                floating  point.   This  is the default for most 68020-
  2098.                based systems unless ----nnnnffffpppp was specified when  the  com-
  2099.                piler was configured.
  2100.  
  2101.           ----mmmm66668888000033330000
  2102.                Generate output for a 68030.  This is the default  when
  2103.                the compiler is configured for 68030-based systems.
  2104.  
  2105.           ----mmmm66668888000044440000
  2106.  
  2107.  
  2108.  
  2109.      Page 32                                         (printed 3/28/94)
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  2117.  
  2118.  
  2119.  
  2120.                Generate output for a 68040.  This is the default  when
  2121.                the compiler is configured for 68040-based systems.
  2122.  
  2123.           ----mmmm66668888000022220000----44440000
  2124.                Generate output for a 68040, without using any  of  the
  2125.                new  instructions.   This results in code which can run
  2126.                relatively efficiently on either  a  68020/68881  or  a
  2127.                68030 or a 68040.
  2128.  
  2129.           ----mmmmffffppppaaaa
  2130.                Generate output containing  Sun  FPA  instructions  for
  2131.                floating point.
  2132.  
  2133.           ----mmmmssssoooofffftttt----ffffllllooooaaaatttt
  2134.                Generate output containing library calls  for  floating
  2135.                point.   _W_A_R_N_I_N_G:  the requisite libraries are not part
  2136.                of GNU CC.  Normally the facilities  of  the  machine's
  2137.                usual  C  compiler  are  used,  but  this can't be done
  2138.                directly in cross-compilation.  You must make your  own
  2139.                arrangements  to provide suitable library functions for
  2140.                cross-compilation.
  2141.  
  2142.           ----mmmmsssshhhhoooorrrrtttt
  2143.                Consider type iiiinnnntttt to be 16 bits wide, like sssshhhhoooorrrrtttt iiiinnnntttt.
  2144.  
  2145.           ----mmmmnnnnoooobbbbiiiittttffffiiiieeeelllldddd
  2146.                Do not use the bit-field instructions.   `----mmmm66668888000000000000'  im-
  2147.                plies `----mmmmnnnnoooobbbbiiiittttffffiiiieeeelllldddd'.
  2148.  
  2149.           ----mmmmbbbbiiiittttffffiiiieeeelllldddd
  2150.                Do use the bit-field instructions.   `----mmmm66668888000022220000'  implies
  2151.                `----mmmmbbbbiiiittttffffiiiieeeelllldddd'.  This is the default if you use the unmo-
  2152.                dified sources.
  2153.  
  2154.           ----mmmmrrrrttttdddd
  2155.                Use a different function-calling convention,  in  which
  2156.                functions  that take a fixed number of arguments return
  2157.                with the rrrrttttdddd instruction, which  pops  their  arguments
  2158.                while  returning.   This  saves  one instruction in the
  2159.                caller since there is no  need  to  pop  the  arguments
  2160.                there.
  2161.  
  2162.                This calling convention is incompatible  with  the  one
  2163.                normally used on Unix, so you cannot use it if you need
  2164.                to call libraries compiled with the Unix compiler.
  2165.  
  2166.                Also, you must  provide  function  prototypes  for  all
  2167.                functions  that take variable numbers of arguments (in-
  2168.                cluding pppprrrriiiinnnnttttffff); otherwise incorrect code will be  gen-
  2169.                erated for calls to those functions.
  2170.  
  2171.                In addition, seriously incorrect code  will  result  if
  2172.  
  2173.  
  2174.  
  2175.      Page 33                                         (printed 3/28/94)
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  2183.  
  2184.  
  2185.  
  2186.                you  call a function with too many arguments.  (Normal-
  2187.                ly, extra arguments are harmlessly ignored.)
  2188.  
  2189.                The rrrrttttdddd instruction is supported by the 68010 and 68020
  2190.                processors, but not by the 68000.
  2191.  
  2192.           These `----mmmm' options are defined for the Vax:
  2193.  
  2194.           ----mmmmuuuunnnniiiixxxx
  2195.                Do not output certain jump instructions (aaaaoooobbbblllleeeeqqqq and  so
  2196.                on)  that  the Unix assembler for the Vax cannot handle
  2197.                across long ranges.
  2198.  
  2199.           ----mmmmggggnnnnuuuu
  2200.                Do output those jump instructions,  on  the  assumption
  2201.                that you will assemble with the GNU assembler.
  2202.  
  2203.           ----mmmmgggg  Output code for g-format floating point numbers instead
  2204.                of d-format.
  2205.  
  2206.           These `----mmmm' switches are supported on the SPARC:
  2207.  
  2208.           ----mmmmffffppppuuuu
  2209.  
  2210.           ----mmmmhhhhaaaarrrrdddd----ffffllllooooaaaatttt
  2211.                Generate output containing floating point instructions.
  2212.                This is the default.
  2213.  
  2214.           ----mmmmnnnnoooo----ffffppppuuuu
  2215.  
  2216.           ----mmmmssssoooofffftttt----ffffllllooooaaaatttt
  2217.                Generate output containing library calls  for  floating
  2218.                point.  _W_a_r_n_i_n_g: there is no GNU floating-point library
  2219.                for SPARC.  Normally the facilities  of  the  machine's
  2220.                usual  C  compiler  are  used,  but this cannot be done
  2221.                directly in cross-compilation.  You must make your  own
  2222.                arrangements  to provide suitable library functions for
  2223.                cross-compilation.
  2224.  
  2225.                ----mmmmssssoooofffftttt----ffffllllooooaaaatttt changes the calling convention in the out-
  2226.                put  file;  therefore, it is only useful if you compile
  2227.                _a_l_l of a program with this option.
  2228.  
  2229.           ----mmmmnnnnoooo----eeeeppppiiiilllloooogggguuuueeee
  2230.  
  2231.           ----mmmmeeeeppppiiiilllloooogggguuuueeee
  2232.                With ----mmmmeeeeppppiiiilllloooogggguuuueeee (the default), the compiler always  em-
  2233.                its code for function exit at the end of each function.
  2234.                Any function exit in the middle of the  function  (such
  2235.                as a return statement in C) will generate a jump to the
  2236.                exit code at the end of the function.
  2237.  
  2238.  
  2239.  
  2240.  
  2241.      Page 34                                         (printed 3/28/94)
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  2249.  
  2250.  
  2251.  
  2252.                With ----mmmmnnnnoooo----eeeeppppiiiilllloooogggguuuueeee, the compiler  tries  to  emit  exit
  2253.                code inline at every function exit.
  2254.  
  2255.           ----mmmmvvvv8888
  2256.  
  2257.           ----mmmmssssppppaaaarrrrcccclllliiiitttteeee
  2258.                These two options select variations on the SPARC archi-
  2259.                tecture.
  2260.  
  2261.                By default  (unless  specifically  configured  for  the
  2262.                Fujitsu SPARClite), GCC generates code for the v7 vari-
  2263.                ant of the SPARC architecture.
  2264.  
  2265.                ----mmmmvvvv8888 will give you SPARC v8 code.  The only  difference
  2266.                from  v7  code  is  that the compiler emits the integer
  2267.                multiply and integer divide instructions which exist in
  2268.                SPARC v8 but not in SPARC v7.
  2269.  
  2270.                ----mmmmssssppppaaaarrrrcccclllliiiitttteeee will give you SPARClite  code.   This  adds
  2271.                the  integer  multiply,  integer  divide  step and scan
  2272.                (ffs) instructions which exist in SPARClite but not  in
  2273.                SPARC v7.
  2274.  
  2275.           These `----mmmm' options are defined for the Convex:
  2276.  
  2277.           ----mmmmcccc1111 Generate output for a C1.  This is the default when the
  2278.                compiler is configured for a C1.
  2279.  
  2280.           ----mmmmcccc2222 Generate output for a C2.  This is the default when the
  2281.                compiler is configured for a C2.
  2282.  
  2283.           ----mmmmaaaarrrrggggccccoooouuuunnnntttt
  2284.                Generate code which puts an argument count in the  word
  2285.                preceding  each argument list.  Some nonportable Convex
  2286.                and Vax programs need this word.  (Debuggers don't, ex-
  2287.                cept for functions with variable-length argument lists;
  2288.                this info is in the symbol table.)
  2289.  
  2290.           ----mmmmnnnnooooaaaarrrrggggccccoooouuuunnnntttt
  2291.                Omit the argument count word.  This is the  default  if
  2292.                you use the unmodified sources.
  2293.  
  2294.           These `----mmmm' options are defined for the AMD Am29000:
  2295.  
  2296.           ----mmmmddddwwww Generate code that assumes the DW  bit  is  set,  i.e.,
  2297.                that byte and halfword operations are directly support-
  2298.                ed by the hardware.  This is the default.
  2299.  
  2300.           ----mmmmnnnnooooddddwwww
  2301.                Generate code that assumes the DW bit is not set.
  2302.  
  2303.           ----mmmmbbbbwwww Generate code that assumes the system supports byte and
  2304.  
  2305.  
  2306.  
  2307.      Page 35                                         (printed 3/28/94)
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  2315.  
  2316.  
  2317.  
  2318.                halfword write operations.  This is the default.
  2319.  
  2320.           ----mmmmnnnnbbbbwwww
  2321.                Generate code that assumes the systems does not support
  2322.                byte  and  halfword  write  operations.   This  implies
  2323.                `----mmmmnnnnooooddddwwww'.
  2324.  
  2325.           ----mmmmssssmmmmaaaallllllll
  2326.                Use a small memory model that assumes that all function
  2327.                addresses  are either within a single 256 KB segment or
  2328.                at an absolute address of less than 256K.  This  allows
  2329.                the  ccccaaaallllllll  instruction  to  be used instead of a ccccoooonnnnsssstttt,
  2330.                ccccoooonnnnsssstttthhhh, ccccaaaalllllllliiii sequence.
  2331.  
  2332.           ----mmmmllllaaaarrrrggggeeee
  2333.                Do not assume that the ccccaaaallllllll instruction  can  be  used;
  2334.                this is the default.
  2335.  
  2336.           ----mmmm22229999000055550000
  2337.                Generate code for the Am29050.
  2338.  
  2339.           ----mmmm22229999000000000000
  2340.                Generate code for the Am29000.  This is the default.
  2341.  
  2342.           ----mmmmkkkkeeeerrrrnnnneeeellll----rrrreeeeggggiiiisssstttteeeerrrrssss
  2343.                Generate references to registers ggggrrrr66664444----ggggrrrr99995555  instead  of
  2344.                ggggrrrr99996666----ggggrrrr111122227777.   This  option  can  be used when compiling
  2345.                kernel code that wants a set of global  registers  dis-
  2346.                joint from that used by user-mode code.
  2347.  
  2348.                Note that when this option is used, register  names  in
  2349.                `----ffff' flags must use the normal, user-mode, names.
  2350.  
  2351.           ----mmmmuuuusssseeeerrrr----rrrreeeeggggiiiisssstttteeeerrrrssss
  2352.                Use the normal set  of  global  registers,  ggggrrrr99996666----ggggrrrr111122227777.
  2353.                This is the default.
  2354.  
  2355.           ----mmmmssssttttaaaacccckkkk----cccchhhheeeecccckkkk
  2356.                Insert a call to ________mmmmsssspppp____cccchhhheeeecccckkkk after each  stack  adjust-
  2357.                ment.  This is often used for kernel code.
  2358.  
  2359.           These `----mmmm' options are defined for  Motorola  88K  architec-
  2360.           tures:
  2361.  
  2362.           ----mmmm88888888000000000000
  2363.                Generate code that works well on both  the  m88100  and
  2364.                the m88110.
  2365.  
  2366.           ----mmmm88888888111100000000
  2367.                Generate code that works best for the m88100, but  that
  2368.                also runs on the m88110.
  2369.  
  2370.  
  2371.  
  2372.  
  2373.      Page 36                                         (printed 3/28/94)
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  2381.  
  2382.  
  2383.  
  2384.           ----mmmm88888888111111110000
  2385.                Generate code that works best for the m88110,  and  may
  2386.                not run on the m88100.
  2387.  
  2388.           ----mmmmiiiiddddeeeennnnttttiiiiffffyyyy----rrrreeeevvvviiiissssiiiioooonnnn
  2389.                Include an iiiiddddeeeennnntttt  directive  in  the  assembler  output
  2390.                recording  the source file name, compiler name and ver-
  2391.                sion, timestamp, and compilation flags used.
  2392.  
  2393.           ----mmmmnnnnoooo----uuuunnnnddddeeeerrrrssssccccoooorrrreeeessss
  2394.                In assembler output, emit symbol names  without  adding
  2395.                an  underscore character at the beginning of each name.
  2396.                The default is to use an underscore as prefix  on  each
  2397.                name.
  2398.  
  2399.           ----mmmmnnnnoooo----cccchhhheeeecccckkkk----zzzzeeeerrrroooo----ddddiiiivvvviiiissssiiiioooonnnn
  2400.  
  2401.           ----mmmmcccchhhheeeecccckkkk----zzzzeeeerrrroooo----ddddiiiivvvviiiissssiiiioooonnnn
  2402.                Early models of the 88K architecture had problems  with
  2403.                division  by  zero;  in particular, many of them didn't
  2404.                trap.  Use these options to avoid including (or to  in-
  2405.                clude explicitly) additional code to detect division by
  2406.                zero and signal an exception.  All  GCC  configurations
  2407.                for the 88K use `----mmmmcccchhhheeeecccckkkk----zzzzeeeerrrroooo----ddddiiiivvvviiiissssiiiioooonnnn' by default.
  2408.  
  2409.           ----mmmmooooccccssss----ddddeeeebbbbuuuugggg----iiiinnnnffffoooo
  2410.  
  2411.           ----mmmmnnnnoooo----ooooccccssss----ddddeeeebbbbuuuugggg----iiiinnnnffffoooo
  2412.                Include  (or  omit)  additional  debugging  information
  2413.                (about registers used in each stack frame) as specified
  2414.                in the 88Open Object Compatibility Standard, OCS.  This
  2415.                extra  information  is  not needed by GDB.  The default
  2416.                for DG/UX, SVr4, and Delta 88 SVr3.2 is to include this
  2417.                information;  other 88k configurations omit this infor-
  2418.                mation by default.
  2419.  
  2420.           ----mmmmooooccccssss----ffffrrrraaaammmmeeee----ppppoooossssiiiittttiiiioooonnnn
  2421.  
  2422.           ----mmmmnnnnoooo----ooooccccssss----ffffrrrraaaammmmeeee----ppppoooossssiiiittttiiiioooonnnn
  2423.                Force (or do not require) register values to be  stored
  2424.                in  a particular place in stack frames, as specified in
  2425.                OCS.  The DG/UX, Delta88 SVr3.2, and BCS configurations
  2426.                use  `----mmmmooooccccssss----ffffrrrraaaammmmeeee----ppppoooossssiiiittttiiiioooonnnn';  other  88k configurations
  2427.                have the default `----mmmmnnnnoooo----ooooccccssss----ffffrrrraaaammmmeeee----ppppoooossssiiiittttiiiioooonnnn'.
  2428.  
  2429.           ----mmmmooooppppttttiiiimmmmiiiizzzzeeee----aaaarrrrgggg----aaaarrrreeeeaaaa
  2430.  
  2431.           ----mmmmnnnnoooo----ooooppppttttiiiimmmmiiiizzzzeeee----aaaarrrrgggg----aaaarrrreeeeaaaa
  2432.                Control  how  to  store  function  arguments  in  stack
  2433.                frames.   `----mmmmooooppppttttiiiimmmmiiiizzzzeeee----aaaarrrrgggg----aaaarrrreeeeaaaa'  saves  space,  but may
  2434.                break       some       debuggers       (not       GDB).
  2435.                `----mmmmnnnnoooo----ooooppppttttiiiimmmmiiiizzzzeeee----aaaarrrrgggg----aaaarrrreeeeaaaa'  conforms better to standards.
  2436.  
  2437.  
  2438.  
  2439.      Page 37                                         (printed 3/28/94)
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  2447.  
  2448.  
  2449.  
  2450.                By default GCC does not optimize the argument area.
  2451.  
  2452.           ----mmmmsssshhhhoooorrrrtttt----ddddaaaattttaaaa----_n_u_m
  2453.                _n_u_m Generate smaller data references by making them re-
  2454.                lative to rrrr0000, which allows loading a value using a sin-
  2455.                gle instruction (rather than the usual two).  You  con-
  2456.                trol  which  data references are affected by specifying
  2457.                _n_u_m with this option.   For  example,  if  you  specify
  2458.                `----mmmmsssshhhhoooorrrrtttt----ddddaaaattttaaaa----555511112222',  then  the data references affected
  2459.                are those involving  displacements  of  less  than  512
  2460.                bytes.   `----mmmmsssshhhhoooorrrrtttt----ddddaaaattttaaaa----_n_u_m'  is  not  effective for _n_u_m
  2461.                greater than 64K.
  2462.  
  2463.           ----mmmmsssseeeerrrriiiiaaaalllliiiizzzzeeee----vvvvoooollllaaaattttiiiilllleeee
  2464.  
  2465.           ----mmmmnnnnoooo----sssseeeerrrriiiiaaaalllliiiizzzzeeee----vvvvoooollllaaaattttiiiilllleeee
  2466.                Do, or do not, generate code  to  guarantee  sequential
  2467.                consistency of volatile memory references.
  2468.  
  2469.                GNU CC always guarantees consistency  by  default,  for
  2470.                the  preferred  processor  submodel.   How this is done
  2471.                depends on the submodel.
  2472.  
  2473.                The m88100 processor does not reorder memory references
  2474.                and  so always provides sequential consistency.  If you
  2475.                use `----mmmm88888888111100000000', GNU CC does not generate any special in-
  2476.                structions for sequential consistency.
  2477.  
  2478.                The order of memory references made by the m88110  pro-
  2479.                cessor  does not always match the order of the instruc-
  2480.                tions requesting those references.   In  particular,  a
  2481.                load  instruction  may execute before a preceding store
  2482.                instruction.  Such reordering violates sequential  con-
  2483.                sistency  of volatile memory references, when there are
  2484.                multiple  processors.   When  you  use   `----mmmm88888888000000000000'   or
  2485.                `----mmmm88888888111111110000',  GNU  CC generates special instructions when
  2486.                appropriate, to force execution in the proper order.
  2487.  
  2488.                The extra code generated to guarantee  consistency  may
  2489.                affect  the  performance  of  your application.  If you
  2490.                know that you can safely forgo this guarantee, you  may
  2491.                use the option `----mmmmnnnnoooo----sssseeeerrrriiiiaaaalllliiiizzzzeeee----vvvvoooollllaaaattttiiiilllleeee'.
  2492.  
  2493.                If you use the `----mmmm88888888111100000000' option but require  sequential
  2494.                consistency  when  running on the m88110 processor, you
  2495.                should use `----mmmmsssseeeerrrriiiiaaaalllliiiizzzzeeee----vvvvoooollllaaaattttiiiilllleeee'.
  2496.  
  2497.           ----mmmmssssvvvvrrrr4444
  2498.  
  2499.           ----mmmmssssvvvvrrrr3333
  2500.                Turn on (`----mmmmssssvvvvrrrr4444') or off  (`----mmmmssssvvvvrrrr3333')  compiler  exten-
  2501.                sions  related to System V release 4 (SVr4).  This con-
  2502.  
  2503.  
  2504.  
  2505.      Page 38                                         (printed 3/28/94)
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  2513.  
  2514.  
  2515.  
  2516.                trols the following:
  2517.  
  2518.              o+ Which variant of the assembler syntax  to  emit  (which
  2519.                you can select independently using `----mmmmvvvveeeerrrrssssiiiioooonnnn----00003333....00000000').
  2520.  
  2521.              o+ `----mmmmssssvvvvrrrr4444' makes the C  preprocessor  recognize  `####pppprrrraaaaggggmmmmaaaa
  2522.                wwwweeeeaaaakkkk'
  2523.  
  2524.              o+ `----mmmmssssvvvvrrrr4444' makes GCC issue additional declaration  direc-
  2525.                tives used in SVr4.
  2526.  
  2527.           `----mmmmssssvvvvrrrr3333' is the default for all m88K  configurations  except
  2528.           the SVr4 configuration.
  2529.  
  2530.           ----mmmmttttrrrraaaapppp----llllaaaarrrrggggeeee----sssshhhhiiiifffftttt
  2531.  
  2532.           ----mmmmhhhhaaaannnnddddlllleeee----llllaaaarrrrggggeeee----sssshhhhiiiifffftttt
  2533.                Include code to detect bit-shifts of more than 31 bits;
  2534.                respectively,  trap  such shifts or emit code to handle
  2535.                them properly.  By default GCC makes no special  provi-
  2536.                sion for large bit shifts.
  2537.  
  2538.           ----mmmmuuuusssseeee----ddddiiiivvvv----iiiinnnnssssttttrrrruuuuccccttttiiiioooonnnn
  2539.                Very early models of the 88K architecture didn't have a
  2540.                divide  instruction,  so GCC avoids that instruction by
  2541.                default.  Use this option to specify that it's safe  to
  2542.                use the divide instruction.
  2543.  
  2544.           ----mmmmvvvveeeerrrrssssiiiioooonnnn----00003333....00000000
  2545.                In the DG/UX configuration, there are  two  flavors  of
  2546.                SVr4.   This  option  modifies ----mmmmssssvvvvrrrr4444 to select whether
  2547.                the hybrid-COFF or real-ELF flavor is used.  All  other
  2548.                configurations ignore this option.
  2549.  
  2550.           ----mmmmwwwwaaaarrrrnnnn----ppppaaaasssssssseeeedddd----ssssttttrrrruuuuccccttttssss
  2551.                Warn when a function passes a struct as an argument  or
  2552.                result.   Structure-passing  conventions  have  changed
  2553.                during the evolution of the C language, and  are  often
  2554.                the  source  of  portability problems.  By default, GCC
  2555.                issues no such warning.
  2556.  
  2557.           These options are defined for the IBM RS6000:
  2558.  
  2559.           ----mmmmffffpppp----iiiinnnn----ttttoooocccc
  2560.  
  2561.           ----mmmmnnnnoooo----ffffpppp----iiiinnnn----ttttoooocccc
  2562.                Control whether or not floating-point constants  go  in
  2563.                the  Table  of  Contents  (TOC),  a table of all global
  2564.                variable and function addresses.  By default  GCC  puts
  2565.                floating-point  constants  there; if the TOC overflows,
  2566.                `----mmmmnnnnoooo----ffffpppp----iiiinnnn----ttttoooocccc' will reduce the size of the TOC, which
  2567.                may avoid the overflow.
  2568.  
  2569.  
  2570.  
  2571.      Page 39                                         (printed 3/28/94)
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  2579.  
  2580.  
  2581.  
  2582.           These `----mmmm' options are defined for the IBM RT PC:
  2583.  
  2584.           ----mmmmiiiinnnn----lllliiiinnnneeee----mmmmuuuullll
  2585.                Use an in-line code sequence  for  integer  multiplies.
  2586.                This is the default.
  2587.  
  2588.           ----mmmmccccaaaallllllll----lllliiiibbbb----mmmmuuuullll
  2589.                Call llllmmmmuuuullll$$$$$$$$ for integer multiples.
  2590.  
  2591.           ----mmmmffffuuuullllllll----ffffpppp----bbbblllloooocccckkkkssss
  2592.                Generate full-size floating point data blocks,  includ-
  2593.                ing  the minimum amount of scratch space recommended by
  2594.                IBM.  This is the default.
  2595.  
  2596.           ----mmmmmmmmiiiinnnniiiimmmmuuuummmm----ffffpppp----bbbblllloooocccckkkkssss
  2597.                Do not include extra scratch space  in  floating  point
  2598.                data  blocks.  This results in smaller code, but slower
  2599.                execution, since scratch space must be allocated dynam-
  2600.                ically.
  2601.  
  2602.           ----mmmmffffpppp----aaaarrrrgggg----iiiinnnn----ffffpppprrrreeeeggggssss
  2603.                Use a calling sequence incompatible with the  IBM  cal-
  2604.                ling  convention  in which floating point arguments are
  2605.                passed  in  floating  point   registers.    Note   that
  2606.                vvvvaaaarrrraaaarrrrggggssss....hhhh  and  ssssttttddddaaaarrrrggggssss....hhhh  will  not work with floating
  2607.                point operands if this option is specified.
  2608.  
  2609.           ----mmmmffffpppp----aaaarrrrgggg----iiiinnnn----ggggrrrreeeeggggssss
  2610.                Use the normal calling convention  for  floating  point
  2611.                arguments.  This is the default.
  2612.  
  2613.           ----mmmmhhhhcccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn
  2614.                Return structures of more  than  one  word  in  memory,
  2615.                rather than in a register.  This provides compatibility
  2616.                with   the   MetaWare   HighC   (hc)   compiler.    Use
  2617.                `----ffffppppcccccccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn'  for compatibility with the Port-
  2618.                able C Compiler (pcc).
  2619.  
  2620.           ----mmmmnnnnoooohhhhcccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn
  2621.                Return some structures of more than one word in  regis-
  2622.                ters,  when convenient.  This is the default.  For com-
  2623.                patibility with the IBM-supplied compilers, use  either
  2624.                `----ffffppppcccccccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn' or `----mmmmhhhhcccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn'.
  2625.  
  2626.           These `----mmmm' options are defined for the MIPS family  of  com-
  2627.           puters:
  2628.  
  2629.           ----mmmmccccppppuuuu====_c_p_u-_t_y_p_e
  2630.                Assume the defaults for the machine type _c_p_u-_t_y_p_e  when
  2631.                scheduling  instructions.   The default _c_p_u-_t_y_p_e is ddddeeee----
  2632.                ffffaaaauuuulllltttt, which picks the longest cycles times for any  of
  2633.                the  machines, in order that the code run at reasonable
  2634.  
  2635.  
  2636.  
  2637.      Page 40                                         (printed 3/28/94)
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  2645.  
  2646.  
  2647.  
  2648.                rates on all MIPS cpu's.  Other  choices  for  _c_p_u-_t_y_p_e
  2649.                are  rrrr2222000000000000,  rrrr3333000000000000,  rrrr4444000000000000, and rrrr6666000000000000.  While picking a
  2650.                specific _c_p_u-_t_y_p_e will  schedule  things  appropriately
  2651.                for  that  particular  chip, the compiler will not gen-
  2652.                erate any code that does not meet level 1 of  the  MIPS
  2653.                ISA  (instruction  set architecture) without the ----mmmmiiiippppssss2222
  2654.                or ----mmmmiiiippppssss3333 switches being used.
  2655.  
  2656.           ----mmmmiiiippppssss2222
  2657.                Issue instructions from level 2 of the MIPS ISA (branch
  2658.                likely,  square root instructions).  The ----mmmmccccppppuuuu====rrrr4444000000000000 or
  2659.                ----mmmmccccppppuuuu====rrrr6666000000000000 switch must be  used  in  conjunction  with
  2660.                ----mmmmiiiippppssss2222.
  2661.  
  2662.           ----mmmmiiiippppssss3333
  2663.                Issue instructions from level 3 of the MIPS ISA (64 bit
  2664.                instructions).   The ----mmmmccccppppuuuu====rrrr4444000000000000 switch must be used in
  2665.                conjunction with ----mmmmiiiippppssss2222.
  2666.  
  2667.           ----mmmmiiiinnnntttt66664444
  2668.  
  2669.           ----mmmmlllloooonnnngggg66664444
  2670.  
  2671.           ----mmmmlllloooonnnngggglllloooonnnngggg111122228888
  2672.                These options don't work at present.
  2673.  
  2674.           ----mmmmmmmmiiiippppssss----aaaassss
  2675.                Generate  code  for  the  MIPS  assembler,  and  invoke
  2676.                mmmmiiiippppssss----ttttffffiiiilllleeee  to  add  normal debug information.  This is
  2677.                the default for all  platforms  except  for  the  OSF/1
  2678.                reference  platform,  using the OSF/rose object format.
  2679.                If any of the ----ggggggggddddbbbb, ----ggggssssttttaaaabbbbssss, or ----ggggssssttttaaaabbbbssss++++ switches  are
  2680.                used, the mmmmiiiippppssss----ttttffffiiiilllleeee program will encapsulate the stabs
  2681.                within MIPS ECOFF.
  2682.  
  2683.           ----mmmmggggaaaassss
  2684.                Generate code for the GNU assembler.  This is  the  de-
  2685.                fault  on  the  OSF/1  reference  platform,  using  the
  2686.                OSF/rose object format.
  2687.  
  2688.           ----mmmmrrrrnnnnaaaammmmeeeessss
  2689.  
  2690.           ----mmmmnnnnoooo----rrrrnnnnaaaammmmeeeessss
  2691.                The ----mmmmrrrrnnnnaaaammmmeeeessss switch says to output code using the  MIPS
  2692.                software  names  for  the  registers,  instead  of  the
  2693.                hardware names (ie, aaaa0000 instead of $$$$4444).  The GNU  assem-
  2694.                bler does not support the ----mmmmrrrrnnnnaaaammmmeeeessss switch, and the MIPS
  2695.                assembler will be instructed to run the MIPS C  prepro-
  2696.                cessor over the source file.  The ----mmmmnnnnoooo----rrrrnnnnaaaammmmeeeessss switch is
  2697.                default.
  2698.  
  2699.           ----mmmmggggppppoooopppptttt
  2700.  
  2701.  
  2702.  
  2703.      Page 41                                         (printed 3/28/94)
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  2711.  
  2712.  
  2713.  
  2714.           ----mmmmnnnnoooo----ggggppppoooopppptttt
  2715.                The ----mmmmggggppppoooopppptttt switch says to write all of  the  data  de-
  2716.                clarations before the instructions in the text section,
  2717.                to all the MIPS assembler to generate one  word  memory
  2718.                references  instead of using two words for short global
  2719.                or static data items.  This is on by default if optimi-
  2720.                zation is selected.
  2721.  
  2722.           ----mmmmssssttttaaaattttssss
  2723.  
  2724.           ----mmmmnnnnoooo----ssssttttaaaattttssss
  2725.                For each non-inline  function  processed,  the  ----mmmmssssttttaaaattttssss
  2726.                switch  causes  the  compiler  to  emit one line to the
  2727.                standard error file to print statistics about the  pro-
  2728.                gram (number of registers saved, stack size, etc.).
  2729.  
  2730.           ----mmmmmmmmeeeemmmmccccppppyyyy
  2731.  
  2732.           ----mmmmnnnnoooo----mmmmeeeemmmmccccppppyyyy
  2733.                The ----mmmmmmmmeeeemmmmccccppppyyyy switch makes all block moves call the  ap-
  2734.                propriate  string function (mmmmeeeemmmmccccppppyyyy or bbbbccccooooppppyyyy) instead of
  2735.                possibly generating inline code.
  2736.  
  2737.           ----mmmmmmmmiiiippppssss----ttttffffiiiilllleeee
  2738.  
  2739.           ----mmmmnnnnoooo----mmmmiiiippppssss----ttttffffiiiilllleeee
  2740.                The ----mmmmnnnnoooo----mmmmiiiippppssss----ttttffffiiiilllleeee  switch  causes  the  compiler  not
  2741.                postprocess  the  object  file with the mmmmiiiippppssss----ttttffffiiiilllleeee pro-
  2742.                gram, after the MIPS assembler has generated it to  add
  2743.                debug support.  If mmmmiiiippppssss----ttttffffiiiilllleeee is not run, then no local
  2744.                variables will be available to the debugger.  In  addi-
  2745.                tion, ssssttttaaaaggggeeee2222 and ssssttttaaaaggggeeee3333 objects will have the temporary
  2746.                file names passed to the assembler embedded in the  ob-
  2747.                ject file, which means the objects will not compare the
  2748.                same.
  2749.  
  2750.           ----mmmmssssoooofffftttt----ffffllllooooaaaatttt
  2751.                Generate output containing library calls  for  floating
  2752.                point.   _W_A_R_N_I_N_G:  the requisite libraries are not part
  2753.                of GNU CC.  Normally the facilities  of  the  machine's
  2754.                usual  C  compiler  are  used,  but  this can't be done
  2755.                directly in cross-compilation.  You must make your  own
  2756.                arrangements  to provide suitable library functions for
  2757.                cross-compilation.
  2758.  
  2759.           ----mmmmhhhhaaaarrrrdddd----ffffllllooooaaaatttt
  2760.                Generate output containing floating point instructions.
  2761.                This is the default if you use the unmodified sources.
  2762.  
  2763.           ----mmmmffffpppp66664444
  2764.                Assume that the FFFFRRRR bit in the status word  is  on,  and
  2765.                that  there are 32 64-bit floating point registers, in-
  2766.  
  2767.  
  2768.  
  2769.      Page 42                                         (printed 3/28/94)
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  2777.  
  2778.  
  2779.  
  2780.                stead of 32 32-bit floating point registers.  You  must
  2781.                also specify the ----mmmmccccppppuuuu====rrrr4444000000000000 and ----mmmmiiiippppssss3333 switches.
  2782.  
  2783.           ----mmmmffffpppp33332222
  2784.                Assume that there are 32 32-bit floating  point  regis-
  2785.                ters.  This is the default.
  2786.  
  2787.           ----mmmmaaaabbbbiiiiccccaaaallllllllssss
  2788.  
  2789.           ----mmmmnnnnoooo----aaaabbbbiiiiccccaaaallllllllssss
  2790.                Emit (or do  not  emit)  the  ....aaaabbbbiiiiccccaaaallllllllssss,  ....ccccppppllllooooaaaadddd,  and
  2791.                ....ccccpppprrrreeeessssttttoooorrrreeee pseudo operations that some System V.4 ports
  2792.                use for position independent code.
  2793.  
  2794.           ----mmmmhhhhaaaallllffff----ppppiiiicccc
  2795.  
  2796.           ----mmmmnnnnoooo----hhhhaaaallllffff----ppppiiiicccc
  2797.                The ----mmmmhhhhaaaallllffff----ppppiiiicccc switch says to put  pointers  to  extern
  2798.                references  into  the  data  section  and load them up,
  2799.                rather than put the references  in  the  text  section.
  2800.                This option does not work at present.  ----GGGG_n_u_m Put global
  2801.                and static items less than or equal to _n_u_m  bytes  into
  2802.                the  small  data  or bss sections instead of the normal
  2803.                data or bss section.  This allows the assembler to emit
  2804.                one  word  memory  reference  instructions based on the
  2805.                global pointer (ggggpppp or $$$$22228888), instead of the  normal  two
  2806.                words  used.  By default, _n_u_m is 8 when the MIPS assem-
  2807.                bler is used, and 0 when the  GNU  assembler  is  used.
  2808.                The  ----GGGG_n_u_m  switch  is also passed to the assembler and
  2809.                linker.  All modules should be compiled with  the  same
  2810.                ----GGGG_n_u_m value.
  2811.  
  2812.           ----nnnnooooccccpppppppp
  2813.                Tell the MIPS assembler to not  run  it's  preprocessor
  2814.                over user assembler files (with a `....ssss' suffix) when as-
  2815.                sembling them.
  2816.  
  2817.           These `----mmmm' options are defined for the Intel 80386 family of
  2818.           computers: ----mmmm444488886666
  2819.  
  2820.           ----mmmmnnnnoooo----444488886666
  2821.                Control whether or not code is optimized for a 486  in-
  2822.                stead  of an 386.  Code generated for a 486 will run on
  2823.                a 386 and vice versa.
  2824.  
  2825.           ----mmmmssssoooofffftttt----ffffllllooooaaaatttt
  2826.                Generate output containing library calls  for  floating
  2827.                point.   _W_a_r_n_i_n_g:  the requisite libraries are not part
  2828.                of GNU CC.  Normally the facilities  of  the  machine's
  2829.                usual  C  compiler  are  used,  but  this can't be done
  2830.                directly in cross-compilation.  You must make your  own
  2831.                arrangements  to provide suitable library functions for
  2832.  
  2833.  
  2834.  
  2835.      Page 43                                         (printed 3/28/94)
  2836.  
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  2843.  
  2844.  
  2845.  
  2846.                cross-compilation.
  2847.  
  2848.                On machines where a  function  returns  floating  point
  2849.                results  in  the  80387  register  stack, some floating
  2850.                point opcodes may be emitted even if `----mmmmssssoooofffftttt----ffffllllooooaaaatttt'  is
  2851.                used.
  2852.  
  2853.           ----mmmmnnnnoooo----ffffpppp----rrrreeeetttt----iiiinnnn----333388887777
  2854.                Do not use the FPU registers for return values of func-
  2855.                tions.
  2856.  
  2857.                The  usual  calling  convention  has  functions  return
  2858.                values  of  types  ffffllllooooaaaatttt and ddddoooouuuubbbblllleeee in an FPU register,
  2859.                even if there is no FPU.  The idea is that the  operat-
  2860.                ing system should emulate an FPU.
  2861.  
  2862.                The option `----mmmmnnnnoooo----ffffpppp----rrrreeeetttt----iiiinnnn----333388887777' causes such  values  to
  2863.                be returned in ordinary CPU registers instead.
  2864.  
  2865.           These `----mmmm' options are defined for the HPPA family  of  com-
  2866.           puters:
  2867.  
  2868.           ----mmmmppppaaaa----rrrriiiisssscccc----1111----0000
  2869.                Generate code for a PA 1.0 processor.
  2870.  
  2871.           ----mmmmppppaaaa----rrrriiiisssscccc----1111----1111
  2872.                Generate code for a PA 1.1 processor.
  2873.  
  2874.           ----mmmmkkkkeeeerrrrnnnneeeellll
  2875.                Generate code which is suitable  for  use  in  kernels.
  2876.                Specifically,  avoid  aaaadddddddd  instructions in which one of
  2877.                the arguments is the DP register;  generate  aaaaddddddddiiiillll  in-
  2878.                structions  instead.   This avoids a rather serious bug
  2879.                in the HP-UX linker.
  2880.  
  2881.           ----mmmmsssshhhhaaaarrrreeeedddd----lllliiiibbbbssss
  2882.                Generate code that can be linked against  HP-UX  shared
  2883.                libraries.   This option is not fully function yet, and
  2884.                is not on by default for any PA target.  Using this op-
  2885.                tion  can  cause  incorrect code to be generated by the
  2886.                compiler.
  2887.  
  2888.           ----mmmmnnnnoooo----sssshhhhaaaarrrreeeedddd----lllliiiibbbbssss
  2889.                Don't generate code that will be linked against  shared
  2890.                libraries.  This is the default for all PA targets.
  2891.  
  2892.           ----mmmmlllloooonnnngggg----ccccaaaallllllllssss
  2893.                Generate code which allows calls to  functions  greater
  2894.                than 256K away from the caller when the caller and cal-
  2895.                lee are in the same source file.  Do not turn this  op-
  2896.                tion  on unless code refuses to link with branch out of
  2897.                range errors from the linker.
  2898.  
  2899.  
  2900.  
  2901.      Page 44                                         (printed 3/28/94)
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  2909.  
  2910.  
  2911.  
  2912.           ----mmmmddddiiiissssaaaabbbblllleeee----ffffpppprrrreeeeggggssss
  2913.                Prevent floating point registers from being used in any
  2914.                manner.   This is necessary for compiling kernels which
  2915.                perform lazy context switching of floating point regis-
  2916.                ters.   If  you  use this option and attempt to perform
  2917.                floating point operations, the compiler will abort.
  2918.  
  2919.           ----mmmmddddiiiissssaaaabbbblllleeee----iiiinnnnddddeeeexxxxiiiinnnngggg
  2920.                Prevent the compiler from using indexing address modes.
  2921.                This avoids some rather obscure problems when compiling
  2922.                MIG generated code under MACH.
  2923.  
  2924.           ----mmmmttttrrrraaaaiiiilllliiiinnnngggg----ccccoooolllloooonnnn
  2925.                Add a colon to the end of label  definitions  (for  ELF
  2926.                assemblers).
  2927.  
  2928.           These `----mmmm' options are defined for the Intel 80960 family of
  2929.           computers:
  2930.  
  2931.           ----mmmm_c_p_u-_t_y_p_e
  2932.                Assume the defaults for the machine type  _c_p_u-_t_y_p_e  for
  2933.                instruction and addressing-mode availability and align-
  2934.                ment.  The default _c_p_u-_t_y_p_e is kkkkbbbb;  other  choices  are
  2935.                kkkkaaaa, mmmmcccc, ccccaaaa, ccccffff, ssssaaaa, and ssssbbbb.
  2936.  
  2937.           ----mmmmnnnnuuuummmmeeeerrrriiiiccccssss
  2938.  
  2939.           ----mmmmssssoooofffftttt----ffffllllooooaaaatttt
  2940.                The ----mmmmnnnnuuuummmmeeeerrrriiiiccccssss option indicates that the processor does
  2941.                support  floating-point instructions.  The ----mmmmssssoooofffftttt----ffffllllooooaaaatttt
  2942.                option indicates that floating-point support should not
  2943.                be assumed.
  2944.  
  2945.           ----mmmmlllleeeeaaaaffff----pppprrrroooocccceeeedddduuuurrrreeeessss
  2946.  
  2947.           ----mmmmnnnnoooo----lllleeeeaaaaffff----pppprrrroooocccceeeedddduuuurrrreeeessss
  2948.                Do (or do not) attempt to alter leaf procedures  to  be
  2949.                callable  with  the  _b_a_l  instruction  as well as _c_a_l_l.
  2950.                This will result in more efficient  code  for  explicit
  2951.                calls  when  the  _b_a_l instruction can be substituted by
  2952.                the assembler or linker, but  less  efficient  code  in
  2953.                other  cases,  such  as calls via function pointers, or
  2954.                using a linker that doesn't support this optimization.
  2955.  
  2956.           ----mmmmttttaaaaiiiillll----ccccaaaallllllll
  2957.  
  2958.           ----mmmmnnnnoooo----ttttaaaaiiiillll----ccccaaaallllllll
  2959.                Do (or do not) make additional attempts  (beyond  those
  2960.                of the machine-independent portions of the compiler) to
  2961.                optimize tail-recursive calls into branches.   You  may
  2962.                not  want  to  do  this  because the detection of cases
  2963.                where this is not valid is not totally  complete.   The
  2964.  
  2965.  
  2966.  
  2967.      Page 45                                         (printed 3/28/94)
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  2975.  
  2976.  
  2977.  
  2978.                default is ----mmmmnnnnoooo----ttttaaaaiiiillll----ccccaaaallllllll.
  2979.  
  2980.           ----mmmmccccoooommmmpppplllleeeexxxx----aaaaddddddddrrrr
  2981.  
  2982.           ----mmmmnnnnoooo----ccccoooommmmpppplllleeeexxxx----aaaaddddddddrrrr
  2983.                Assume (or do not assume) that the use of a complex ad-
  2984.                dressing  mode  is  a win on this implementation of the
  2985.                i960.  Complex addressing modes may not  be  worthwhile
  2986.                on  the  K-series,  but  they  definitely are on the C-
  2987.                series.  The default is  currently  ----mmmmccccoooommmmpppplllleeeexxxx----aaaaddddddddrrrr  for
  2988.                all processors except the CB and CC.
  2989.  
  2990.           ----mmmmccccooooddddeeee----aaaalllliiiiggggnnnn
  2991.  
  2992.           ----mmmmnnnnoooo----ccccooooddddeeee----aaaalllliiiiggggnnnn
  2993.                Align code to 8-byte boundaries for faster fetching (or
  2994.                don't  bother).   Currently turned on by default for C-
  2995.                series implementations only.
  2996.  
  2997.           ----mmmmiiiicccc----ccccoooommmmppppaaaatttt
  2998.  
  2999.           ----mmmmiiiicccc2222....0000----ccccoooommmmppppaaaatttt
  3000.  
  3001.           ----mmmmiiiicccc3333....0000----ccccoooommmmppppaaaatttt
  3002.                Enable compatibility with iC960 v2.0 or v3.0.
  3003.  
  3004.           ----mmmmaaaassssmmmm----ccccoooommmmppppaaaatttt
  3005.  
  3006.           ----mmmmiiiinnnntttteeeellll----aaaassssmmmm
  3007.                Enable compatibility with the iC960 assembler.
  3008.  
  3009.           ----mmmmssssttttrrrriiiicccctttt----aaaalllliiiiggggnnnn
  3010.  
  3011.           ----mmmmnnnnoooo----ssssttttrrrriiiicccctttt----aaaalllliiiiggggnnnn
  3012.                Do not permit (do permit) unaligned accesses.
  3013.  
  3014.           ----mmmmoooolllldddd----aaaalllliiiiggggnnnn
  3015.                Enable structure-alignment compatibility  with  Intel's
  3016.                gcc release version 1.3 (based on gcc 1.37).  Currently
  3017.                this is buggy in that ####pppprrrraaaaggggmmmmaaaa aaaalllliiiiggggnnnn 1111 is always assumed
  3018.                as well, and cannot be turned off.
  3019.  
  3020.           These `----mmmm' options are defined for the DEC Alpha implementa-
  3021.           tions:
  3022.  
  3023.           ----mmmmnnnnoooo----ssssoooofffftttt----ffffllllooooaaaatttt
  3024.  
  3025.           ----mmmmssssoooofffftttt----ffffllllooooaaaatttt
  3026.                Use (do not use) the hardware  floating-point  instruc-
  3027.                tions for floating-point operations.  When ----mmmmssssoooofffftttt----ffffllllooooaaaatttt
  3028.                is specified, functions in `lllliiiibbbbggggcccccccc1111....cccc' will be used  to
  3029.                perform floating-point operations.  Unless they are re-
  3030.  
  3031.  
  3032.  
  3033.      Page 46                                         (printed 3/28/94)
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  3041.  
  3042.  
  3043.  
  3044.                placed by  routines  that  emulate  the  floating-point
  3045.                operations,  or  compiled in such a way as to call such
  3046.                emulations  routines,   these   routines   will   issue
  3047.                floating-point  operations.    If you are compiling for
  3048.                an Alpha without floating-point  operations,  you  must
  3049.                ensure  that  the  library  is  built so as not to call
  3050.                them.
  3051.  
  3052.                Note that Alpha implementations without  floating-point
  3053.                operations  are  required to have floating-point regis-
  3054.                ters.
  3055.  
  3056.           ----mmmmffffpppp----rrrreeeegggg
  3057.  
  3058.           ----mmmmnnnnoooo----ffffpppp----rrrreeeeggggssss
  3059.                Generate code that uses (does not  use)  the  floating-
  3060.                point register set.  ----mmmmnnnnoooo----ffffpppp----rrrreeeeggggssss implies ----mmmmssssoooofffftttt----ffffllllooooaaaatttt.
  3061.                If the floating-point register set is not used,  float-
  3062.                ing  point  operands are passed in integer registers as
  3063.                if they were integers and  floating-point  results  are
  3064.                passed  in  $0  instead of $f0.  This is a non-standard
  3065.                calling sequence, so any function with a floating-point
  3066.                argument  or  return value called by code compiled with
  3067.                ----mmmmnnnnoooo----ffffpppp----rrrreeeeggggssss must also be compiled with that option.
  3068.  
  3069.                A typical use of this option is building a kernel  that
  3070.                does  not use, and hence need not save and restore, any
  3071.                floating-point registers.
  3072.  
  3073.           These additional options are available on System V Release 4
  3074.           for compatibility with other compilers on those systems:
  3075.  
  3076.           ----GGGG   On SVr4 systems,  ggggcccccccc  accepts  the  option  `----GGGG'  (and
  3077.                passes it to the system linker), for compatibility with
  3078.                other compilers.  However, we suggest you use `----ssssyyyymmmmbbbboooollll----
  3079.                iiiicccc'  or  `----sssshhhhaaaarrrreeeedddd' as appropriate, instead of supplying
  3080.                linker options on the ggggcccccccc command line.
  3081.  
  3082.           ----QQQQyyyy  Identify the versions of each tool  used  by  the  com-
  3083.                piler, in a ....iiiiddddeeeennnntttt assembler directive in the output.
  3084.  
  3085.           ----QQQQnnnn  Refrain from adding ....iiiiddddeeeennnntttt  directives  to  the  output
  3086.                file (this is the default).
  3087.  
  3088.           ----YYYYPPPP,,,,_d_i_r_s
  3089.                Search the directories _d_i_r_s, and  no  others,  for  li-
  3090.                braries specified with `----llll'.  You can separate directo-
  3091.                ry entries in _d_i_r_s from one another with colons.
  3092.  
  3093.           ----YYYYmmmm,,,,_d_i_r
  3094.                Look in the directory _d_i_r to find the M4  preprocessor.
  3095.                The assembler uses this option.
  3096.  
  3097.  
  3098.  
  3099.      Page 47                                         (printed 3/28/94)
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  3107.  
  3108.  
  3109.  
  3110.      CCCCOOOODDDDEEEE GGGGEEEENNNNEEEERRRRAAAATTTTIIIIOOOONNNN OOOOPPPPTTTTIIIIOOOONNNNSSSS
  3111.           These machine-independent options control the interface con-
  3112.           ventions used in code generation.
  3113.  
  3114.           Most of them begin with `-f'.  These options have both posi-
  3115.           tive  and negative forms; the negative form of `----ffffffffoooooooo' would
  3116.           be `----ffffnnnnoooo----ffffoooooooo'.  In the table below, only one of the forms is
  3117.           listed-the one which is not the default.  You can figure out
  3118.           the other form by either removing `nnnnoooo----' or adding it.
  3119.  
  3120.           ----ffffnnnnoooonnnnnnnnuuuullllllll----oooobbbbjjjjeeeeccccttttssss
  3121.                Assume that objects reached through references are  not
  3122.                null (C++ only).
  3123.  
  3124.                Normally, GNU C++ makes conservative assumptions  about
  3125.                objects  reached  through references.  For example, the
  3126.                compiler must check that aaaa is not null in code like the
  3127.                following:
  3128.  
  3129.                obj &a = g (); a.f (2);
  3130.  
  3131.                Checking that references of  this  sort  have  non-null
  3132.                values requires extra code, however, and it is unneces-
  3133.                sary  for  many  programs.   You  can  use  `----ffffnnnnoooonnnnnnnnuuuullllllll----
  3134.                oooobbbbjjjjeeeeccccttttssss'  to  omit the checks for null, if your program
  3135.                doesn't require checking.
  3136.  
  3137.           ----ffffppppcccccccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn
  3138.                Use the same convention for returning ssssttttrrrruuuucccctttt and  uuuunnnniiiioooonnnn
  3139.                values  that  is  used  by the usual C compiler on your
  3140.                system.  This convention is less  efficient  for  small
  3141.                structures,  and  on many machines it fails to be reen-
  3142.                trant; but it has the advantage of allowing intercalla-
  3143.                bility between GCC-compiled code and PCC-compiled code.
  3144.  
  3145.           ----ffffrrrreeeegggg----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn
  3146.                Use the convention that ssssttttrrrruuuucccctttt and uuuunnnniiiioooonnnn values are re-
  3147.                turned  in registers when possible.  This is more effi-
  3148.                cient for small structures than ----ffffppppcccccccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn.
  3149.  
  3150.                If  you   specify   neither   ----ffffppppcccccccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn   nor
  3151.                ----ffffrrrreeeegggg----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn,  GNU CC defaults to whichever con-
  3152.                vention is standard for the target.   If  there  is  no
  3153.                standard     convention,    GNU    CC    defaults    to
  3154.                ----ffffppppcccccccc----ssssttttrrrruuuucccctttt----rrrreeeettttuuuurrrrnnnn.
  3155.  
  3156.           ----ffffsssshhhhoooorrrrtttt----eeeennnnuuuummmmssss
  3157.                Allocate to an eeeennnnuuuummmm type only as many bytes as it needs
  3158.                for the declared range of possible values.  Specifical-
  3159.                ly, the eeeennnnuuuummmm type will be equivalent  to  the  smallest
  3160.                integer type which has enough room.
  3161.  
  3162.  
  3163.  
  3164.  
  3165.      Page 48                                         (printed 3/28/94)
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  3173.  
  3174.  
  3175.  
  3176.           ----ffffsssshhhhoooorrrrtttt----ddddoooouuuubbbblllleeee
  3177.                Use the same size for ddddoooouuuubbbblllleeee as for ffffllllooooaaaatttt .
  3178.  
  3179.           ----ffffsssshhhhaaaarrrreeeedddd----ddddaaaattttaaaa
  3180.                Requests that the data and non-ccccoooonnnnsssstttt variables of  this
  3181.                compilation  be  shared  data rather than private data.
  3182.                The distinction makes sense only on  certain  operating
  3183.                systems,  where shared data is shared between processes
  3184.                running the same program, while private data exists  in
  3185.                one copy per process.
  3186.  
  3187.           ----ffffnnnnoooo----ccccoooommmmmmmmoooonnnn
  3188.                Allocate even uninitialized global variables in the bss
  3189.                section of the object file, rather than generating them
  3190.                as common blocks.  This has the effect that if the same
  3191.                variable  is declared (without eeeexxxxtttteeeerrrrnnnn) in two different
  3192.                compilations, you will get an error when you link them.
  3193.                The  only reason this might be useful is if you wish to
  3194.                verify that the program  will  work  on  other  systems
  3195.                which always work this way.
  3196.  
  3197.           ----ffffnnnnoooo----iiiiddddeeeennnntttt
  3198.                Ignore the `####iiiiddddeeeennnntttt' directive.
  3199.  
  3200.           ----ffffnnnnoooo----ggggnnnnuuuu----lllliiiinnnnkkkkeeeerrrr
  3201.                Do not output global initializations (such as C++  con-
  3202.                structors  and destructors) in the form used by the GNU
  3203.                linker (on systems where the GNU linker is the standard
  3204.                method  of  handling  them).   Use this option when you
  3205.                want to use a non-GNU linker, which also requires using
  3206.                the ccccoooolllllllleeeecccctttt2222 program to make sure the system linker in-
  3207.                cludes constructors and destructors.  (ccccoooolllllllleeeecccctttt2222 is  in-
  3208.                cluded  in the GNU CC distribution.)  For systems which
  3209.                _m_u_s_t use ccccoooolllllllleeeecccctttt2222, the compiler driver ggggcccccccc  is  config-
  3210.                ured to do this automatically.
  3211.  
  3212.           ----ffffiiiinnnnhhhhiiiibbbbiiiitttt----ssssiiiizzzzeeee----ddddiiiirrrreeeeccccttttiiiivvvveeee
  3213.                Don't output a ....ssssiiiizzzzeeee assembler directive,  or  anything
  3214.                else  that would cause trouble if the function is split
  3215.                in the middle, and the two halves are placed  at  loca-
  3216.                tions  far  apart  in memory.  This option is used when
  3217.                compiling `ccccrrrrttttssssttttuuuuffffffff....cccc'; you should not need to  use  it
  3218.                for anything else.
  3219.  
  3220.           ----ffffvvvveeeerrrrbbbboooosssseeee----aaaassssmmmm
  3221.                Put extra commentary information in the  generated  as-
  3222.                sembly  code  to make it more readable.  This option is
  3223.                generally only of use to those  who  actually  need  to
  3224.                read  the generated assembly code (perhaps while debug-
  3225.                ging the compiler itself).
  3226.  
  3227.           ----ffffvvvvoooollllaaaattttiiiilllleeee
  3228.  
  3229.  
  3230.  
  3231.      Page 49                                         (printed 3/28/94)
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  3239.  
  3240.  
  3241.  
  3242.                Consider all memory references through pointers  to  be
  3243.                volatile.
  3244.  
  3245.           ----ffffvvvvoooollllaaaattttiiiilllleeee----gggglllloooobbbbaaaallll
  3246.                Consider all memory references  to  extern  and  global
  3247.                data items to be volatile.
  3248.  
  3249.           ----ffffppppiiiicccc
  3250.                If  supported  for  the   target   machines,   generate
  3251.                position-independent code, suitable for use in a shared
  3252.                library.
  3253.  
  3254.           ----ffffPPPPIIIICCCC
  3255.                If supported for the  target  machine,  emit  position-
  3256.                independent code, suitable for dynamic linking, even if
  3257.                branches need large displacements.
  3258.  
  3259.           ----ffffffffiiiixxxxeeeedddd----_r_e_g
  3260.                Treat the register named _r_e_g as a fixed register;  gen-
  3261.                erated code should never refer to it (except perhaps as
  3262.                a stack pointer, frame pointer or in some  other  fixed
  3263.                role).
  3264.  
  3265.                _r_e_g must be the name of a register.  The register names
  3266.                accepted  are  machine-specific  and are defined in the
  3267.                RRRREEEEGGGGIIIISSSSTTTTEEEERRRR____NNNNAAAAMMMMEEEESSSS macro in the machine  description  macro
  3268.                file.
  3269.  
  3270.                This flag does not have a  negative  form,  because  it
  3271.                specifies a three-way choice.
  3272.  
  3273.           ----ffffccccaaaallllllll----uuuusssseeeedddd----_r_e_g
  3274.                Treat the register named _r_e_g as an allocatable register
  3275.                that  is  clobbered by function calls.  It may be allo-
  3276.                cated for temporaries or variables  that  do  not  live
  3277.                across  a  call.   Functions compiled this way will not
  3278.                save and restore the register _r_e_g.
  3279.  
  3280.                Use of this flag for a register that has a  fixed  per-
  3281.                vasive  role  in the machine's execution model, such as
  3282.                the stack pointer or frame pointer, will produce disas-
  3283.                trous results.
  3284.  
  3285.                This flag does not have a  negative  form,  because  it
  3286.                specifies a three-way choice.
  3287.  
  3288.           ----ffffccccaaaallllllll----ssssaaaavvvveeeedddd----_r_e_g
  3289.                Treat the register named _r_e_g as an allocatable register
  3290.                saved  by functions.  It may be allocated even for tem-
  3291.                poraries or variables that live across a  call.   Func-
  3292.                tions  compiled  this way will save and restore the re-
  3293.                gister _r_e_g if they use it.
  3294.  
  3295.  
  3296.  
  3297.      Page 50                                         (printed 3/28/94)
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  3305.  
  3306.  
  3307.  
  3308.                Use of this flag for a register that has a  fixed  per-
  3309.                vasive  role  in the machine's execution model, such as
  3310.                the stack pointer or frame pointer, will produce disas-
  3311.                trous results.
  3312.  
  3313.                A different sort of disaster will result from  the  use
  3314.                of  this  flag  for a register in which function values
  3315.                may be returned.
  3316.  
  3317.                This flag does not have a  negative  form,  because  it
  3318.                specifies a three-way choice.
  3319.  
  3320.      PPPPRRRRAAAAGGGGMMMMAAAASSSS
  3321.           Two `####pppprrrraaaaggggmmmmaaaa' directives are supported for GNU C++, to  per-
  3322.           mit using the same header file for two purposes: as a defin-
  3323.           ition of interfaces to a given object class, and as the full
  3324.           definition of the contents of that object class.
  3325.  
  3326.           ####pppprrrraaaaggggmmmmaaaa iiiinnnntttteeeerrrrffffaaaacccceeee
  3327.                (C++ only.) Use this directive in header files that de-
  3328.                fine  object  classes, to save space in most of the ob-
  3329.                ject files that use  those  classes.   Normally,  local
  3330.                copies  of certain information (backup copies of inline
  3331.                member functions, debugging information, and the inter-
  3332.                nal  tables  that  implement virtual functions) must be
  3333.                kept in each object file that  includes  class  defini-
  3334.                tions.   You can use this pragma to avoid such duplica-
  3335.                tion.  When a header file  containing  `####pppprrrraaaaggggmmmmaaaa  iiiinnnntttteeeerrrr----
  3336.                ffffaaaacccceeee'  is included in a compilation, this auxiliary in-
  3337.                formation will not be generated (unless the main  input
  3338.                source file itself uses `####pppprrrraaaaggggmmmmaaaa iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn').  In-
  3339.                stead, the object files will contain references  to  be
  3340.                resolved at link time.
  3341.  
  3342.           ####pppprrrraaaaggggmmmmaaaa iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn
  3343.  
  3344.           ####pppprrrraaaaggggmmmmaaaa iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn """"_o_b_j_e_c_t_s....hhhh""""
  3345.                (C++ only.) Use this pragma in a main input file,  when
  3346.                you  want  full output from included header files to be
  3347.                generated (and made globally  visible).   The  included
  3348.                header  file,  in turn, should use `####pppprrrraaaaggggmmmmaaaa iiiinnnntttteeeerrrrffffaaaacccceeee'.
  3349.                Backup copies of inline member functions, debugging in-
  3350.                formation,  and  the  internal tables used to implement
  3351.                virtual functions are all generated  in  implementation
  3352.                files.
  3353.  
  3354.                If you use `####pppprrrraaaaggggmmmmaaaa iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn' with  no  argument,
  3355.                it applies to an include file with the same basename as
  3356.                your  source  file;  for  example,  in   `aaaallllllllccccllllaaaassssssss....cccccccc',
  3357.                `####pppprrrraaaaggggmmmmaaaa  iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn'  by  itself  is equivalent to
  3358.                `####pppprrrraaaaggggmmmmaaaa iiiimmmmpppplllleeeemmmmeeeennnnttttaaaattttiiiioooonnnn """"aaaallllllllccccllllaaaassssssss....hhhh""""'.  Use the  string
  3359.                argument  if  you  want a single implementation file to
  3360.  
  3361.  
  3362.  
  3363.      Page 51                                         (printed 3/28/94)
  3364.  
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  3371.  
  3372.  
  3373.  
  3374.                include code from multiple header files.
  3375.  
  3376.                There is no way to split up the contents  of  a  single
  3377.                header file into multiple implementation files.
  3378.  
  3379.      FFFFIIIILLLLEEEESSSS
  3380.           file.c             C source file
  3381.           file.h             C header (preprocessor) file
  3382.           file.i             preprocessed C source file
  3383.           file.C             C++ source file
  3384.           file.cc            C++ source file
  3385.           file.cxx           C++ source file
  3386.           file.m             Objective-C source file
  3387.           file.s             assembly language file
  3388.           file.o             object file
  3389.           a.out              link edited output
  3390.           _T_M_P_D_I_R/cc*         temporary files
  3391.           _L_I_B_D_I_R/cpp         preprocessor
  3392.           _L_I_B_D_I_R/cc1         compiler for C
  3393.           _L_I_B_D_I_R/cc1plus     compiler for C++
  3394.           _L_I_B_D_I_R/collect     linker front end needed on some machines
  3395.           _L_I_B_D_I_R/libgcc.a    GCC subroutine library
  3396.           /lib/crt[01n].o    start-up routine
  3397.           _L_I_B_D_I_R/ccrt0       additional start-up routine for C++
  3398.           /lib/libc.a        standard C library, see
  3399.           _i_n_t_r_o(3)
  3400.           /usr/include       standard directory for ####iiiinnnncccclllluuuuddddeeee files
  3401.           _L_I_B_D_I_R/include     standard gcc directory for ####iiiinnnncccclllluuuuddddeeee files
  3402.           _L_I_B_D_I_R/g++-include additional g++ directory for ####iiiinnnncccclllluuuuddddeeee
  3403.  
  3404.           _L_I_B_D_I_R is usually ////uuuussssrrrr////llllooooccccaaaallll////lllliiiibbbb////_m_a_c_h_i_n_e/_v_e_r_s_i_o_n.
  3405.           _T_M_P_D_I_R comes from the environment variable  TTTTMMMMPPPPDDDDIIIIRRRR  (default
  3406.           ////uuuussssrrrr////ttttmmmmpppp if available, else ////ttttmmmmpppp).
  3407.  
  3408.      SSSSEEEEEEEE AAAALLLLSSSSOOOO
  3409.           cpp(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1).
  3410.           `ggggcccccccc', `ccccpppppppp', `aaaassss', `lllldddd', and `ggggddddbbbb' entries in iiiinnnnffffoooo.
  3411.           _U_s_i_n_g _a_n_d _P_o_r_t_i_n_g _G_N_U  _C_C  (_f_o_r  _v_e_r_s_i_o_n  _2._0),  Richard  M.
  3412.           Stallman; _T_h_e _C _P_r_e_p_r_o_c_e_s_s_o_r, Richard M. Stallman; _D_e_b_u_g_g_i_n_g
  3413.           _w_i_t_h _G_D_B: _t_h_e _G_N_U _S_o_u_r_c_e-_L_e_v_e_l _D_e_b_u_g_g_e_r, Richard M. Stallman
  3414.           and  Roland H. Pesch; _U_s_i_n_g _a_s: _t_h_e _G_N_U _A_s_s_e_m_b_l_e_r, Dean Els-
  3415.           ner, Jay Fenlason & friends; _l_d: _t_h_e _G_N_U _l_i_n_k_e_r, Steve Cham-
  3416.           berlain and Roland Pesch.
  3417.  
  3418.      BBBBUUUUGGGGSSSS
  3419.           For instructions on reporting bugs, see the GCC manual.
  3420.  
  3421.      CCCCOOOOPPPPYYYYIIIINNNNGGGG
  3422.           Copyright 1991, 1992, 1993 Free Software Foundation, Inc.
  3423.  
  3424.           Permission is granted to make and distribute verbatim copies
  3425.           of  this  manual provided the copyright notice and this per-
  3426.  
  3427.  
  3428.  
  3429.      Page 52                                         (printed 3/28/94)
  3430.  
  3431.  
  3432.  
  3433.  
  3434.  
  3435.  
  3436.      GGGGCCCCCCCC((((1111))))               GGGGNNNNUUUU TTTToooooooollllssss ((((1111999999993333////11110000////11113333))))                GGGGCCCCCCCC((((1111))))
  3437.  
  3438.  
  3439.  
  3440.           mission notice are preserved on all copies.
  3441.  
  3442.           Permission is granted to copy and distribute  modified  ver-
  3443.           sions of this manual under the conditions for verbatim copy-
  3444.           ing, provided that the entire resulting derived work is dis-
  3445.           tributed under the terms of a permission notice identical to
  3446.           this one.
  3447.  
  3448.           Permission is granted to copy and distribute translations of
  3449.           this  manual  into  another language, under the above condi-
  3450.           tions for modified versions, except that this permission no-
  3451.           tice  may  be  included in translations approved by the Free
  3452.           Software Foundation instead of in the original English.
  3453.  
  3454.      AAAAUUUUTTTTHHHHOOOORRRRSSSS
  3455.           See the GNU CC Manual for the contributors to GNU CC.
  3456.  
  3457.  
  3458.  
  3459.  
  3460.  
  3461.  
  3462.  
  3463.  
  3464.  
  3465.  
  3466.  
  3467.  
  3468.  
  3469.  
  3470.  
  3471.  
  3472.  
  3473.  
  3474.  
  3475.  
  3476.  
  3477.  
  3478.  
  3479.  
  3480.  
  3481.  
  3482.  
  3483.  
  3484.  
  3485.  
  3486.  
  3487.  
  3488.  
  3489.  
  3490.  
  3491.  
  3492.  
  3493.  
  3494.  
  3495.      Page 53                                         (printed 3/28/94)
  3496.  
  3497.  
  3498.  
  3499.